如何防止数据库中的重复条目

时间:2015-03-19 06:27:57

标签: database oracle

我正在尝试实现好友请求功能并使用oracle 11 xe数据库。 我的user1向user2发送请求,因此数据库中的记录被创建为

requestId :12, fromUser :user1, toUser :user2, 状态:0(表示待处理), creationTime :时间戳

我想阻止相同的条目,即user1只能发送一次朋友请求而不是两次。请求Id是主键,user1和user2都是外键。 什么样的oracle数据库约束或sql命令我应该添加到我的表。 请帮忙

2 个答案:

答案 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'列组合为主键。由于一个用户可以将朋友请求发送给另一个用户,只需一次。