【发布时间】:2019-06-14 16:25:41
【问题描述】:
我在表 x 上有一个唯一键,包含 3 列 (a,b,c),其中 a,b,c 是外键,c 在 x 表中可以为空。
a b c
- - ----
1 1 1
1 1 2
1 1 NULL
1 1 NUll
以上行在 MySQL 上有效,插入具有多个 null 的行不会违反约束。但对于 Oracle ,SQL-Server 则不是这样
这种情况下的最佳做法是什么?
每个唯一约束都会创建唯一索引,如果我禁用唯一索引,SQL-Server 中也允许多个空值(使用过滤索引)
我需要在 c 列中设置多个值,其中 null 作为其外键。
请建议我应该删除唯一键约束,我应该从表 x 的列 c 中删除外键。或者我们有任何其他解决方案。
【问题讨论】:
-
在 mysql 中可能允许使用的唯一键和不允许使用的外键,但毫无意义。
-
我有一个应用程序支持4个数据库
-
如果你的列不是唯一的,那么你就不能对它们有唯一的约束(或者,至少,在 MySQL 的情况下不应该有一个)。
-
列是唯一的,但当列值之一为 NULL 时,它不是唯一的。
-
这不是好事吗?如果 (a,b,c) 有唯一约束,那么添加两个 (1,1,null) 无论如何都会出错?
标签: mysql sql sql-server oracle