【发布时间】:2017-06-01 07:13:42
【问题描述】:
我正在构建一个聊天系统的后端,我有一个 Message 表,如下所示:
问题是我需要 2 个外键指向同一个表 ID。
没问题,但是在用户发送多条消息的情况下,数据库说
违反了唯一约束
例子:
13 Testmessage1 01.06.17 08:15:01,456554000 2 (sender_id) 23 (receiver_id)
14 Testmessage2 01.06.17 07:09:08,517000000 2 (sender_id) 23 (receiver_id)
最后两个标识符是相同的用户 ID!
我该如何处理?
【问题讨论】:
-
好吧,如果一条消息可能有多个收件人,您想为消息收件人创建一个表,并将其用于消息和收件人 ID 之间的多对多关系。
-
一封邮件只有一个收件人,而不是多个收件人。我有一个用户表。消息表必须使用外键作为用户 ID。如果发件人向同一用户写入多条消息,则会带来“违反唯一约束”错误。那就是问题所在!我还将这两个键设置为 unique=False。
-
那么你的唯一约束是错误的。它不能仅基于发送者和接收者 ID,您还必须在其中包含其他内容。
-
同时显示用户表的结构并显示两者的创建语句,或显示两个表上的所有约束。
标签: sql database oracle foreign-keys unique