Jav*_*ker 4 sql database oracle
我不确定如何表达这个,但是这里......我们有一个如下表结构:
Id | Timestamp | Type | Clientid | ..others..
001 | 1234567890 | TYPE1 | CL1234567 |.....
002 | 1234561890 | TYPE1 | CL1234567 |.....
Run Code Online (Sandbox Code Playgroud)
现在对于上面给出的数据...我想有一个约束,以便这两行不能一起存在.基本上,我希望桌子是
Unique for (Type, ClientId, CEIL(Timestamp/10000)*10000)
Run Code Online (Sandbox Code Playgroud)
我不希望将在彼此的X时间内创建的相同数据的行添加到db中,即在这种情况下想要约束违规.问题是,上述约束不是我实际可以创建的.
在你问之前,我知道,我知道......为什么呢?我知道某种情况不应该发生,但唉.我现在需要一种止损措施,所以我可以花一些时间来调查实际问题.如果您需要其他信息,请告诉我......
是的,Oracle支持计算列:
SQL> alter table test add calc_column as (trunc(timestamp/10000));
Table altered.
SQL> alter table test
add constraint test_uniq
unique (type, clientid, calc_column);
Table altered.
Run Code Online (Sandbox Code Playgroud)
应该做你想做的事.