我正在尝试实现好友请求功能并使用oracle 11 xe数据库。 我的user1向user2发送请求,因此数据库中的记录被创建为
requestId :12, fromUser :user1, toUser :user2, 状态:0(表示待处理), creationTime :时间戳
我想阻止相同的条目,即user1只能发送一次朋友请求而不是两次。请求Id是主键,user1和user2都是外键。 什么样的oracle数据库约束或sql命令我应该添加到我的表。 请帮忙
答案 0 :(得分:1)
如果您想拥有 requestId , fromUser 和 toUser 的独特组合,并且没有任何列永远不会为NULL。然后将组合作为主键。
或者,如果您想允许NULL值并且只希望 fromUser 且 toUser 始终为 UNIQUE ,则创建唯一索引在他们身上并创造一个独特的约束。唯一约束将使用唯一索引。
例如,
CREATE UNIQUE INDEX indx_usr_uk
ON table_name (fromUser, toUser);
ALTER TABLE table_name
ADD CONSTRAINT user_unique UNIQUE (fromUser, toUser);
如果您没有显式创建唯一索引,那么Oracle将使用任何现有索引。
答案 1 :(得分:0)
您可能将'fromUser','toUser'列组合为主键。由于一个用户可以将朋友请求发送给另一个用户,只需一次。