![]() |
1
6
您可能无法在数据库级别执行此操作——您的应用程序代码必须执行此操作。如果您确保您的tbl_朋友记录始终与(lowid,highid)一致,那么典型的pk/唯一索引将解决重复问题。事实上,为了加强这一点,我将把你的tbl_朋友中的列重命名为(i d_low,i d_high)。 你对用户713的查询会是
为了提高效率,您可能需要向前和向后索引它——这是由(id_user,id_friend)和(id_friend,id_user)进行的。 如果你 必须 在DB级别执行此操作,然后在插入之前将参数交换为(低、高)的存储过程将起作用。 |
![]() |
2
3
您必须使用触发器来强制执行该业务规则。
你可以用一个
…或工会:
|
![]() |
3
1
好吧,这对列上的一个唯一约束将使您到达一半。我认为最简单的方法是添加一个约束以确保ID_用户<ID_朋友不会得到反向版本。您将需要在插入时补偿这个顺序,但它将使您获得所需的数据库级约束,而不需要复制数据或依赖外键。 对于第二个问题,要查找id=1的所有朋友,可以选择id_user、id_friend from tbl_friend,其中id_user=1或id_friend=1,然后在客户端代码中抛出所有1,而不考虑列。 |
![]() |
4
0
一种方法是将两个朋友存储在两行中:
看到了吗?插入它们的顺序无关紧要,因为两个朋友都进入了“朋友ID”列。因此,您可以轻松地强制执行唯一性。 您还可以轻松查询713的朋友:
|
|
Johnny T · 基于当前值的SQL合并表[重复] 4 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 5 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 5 月前 |
![]() |
Sax · 规范化Google表格(第一步) 5 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |