请教如何在允许null值的字段创建唯一索引,但又要允许null值重复。

时间:2021-04-14 00:38:21
也就是当该字段填写内容时必须何证是唯一的,否则允许重复的null值。
谢谢

12 个解决方案

#1


在插入之前先判断要插入的值是否存在

#2


这个不太可能吧??
既然是唯一的索引!!又怎么可能为重复NULL呢??

#3


不可能的任务

#4


access有这个功能的

#5


書上這樣說:
設成唯一索引的字段最好也設為NOT NULL,否則只能輸入一筆為NULL的內容,再輸入第二筆NULL資料時便會發生錯誤(因為NJLL值也不可以重複)

#6


用触发器来处理

#7


应该不可以吧

#8


用触发器判断,如果为空,则不用判断
如果不为空,则判断表中是否已经存在

#9


指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。

WITH CHECK 和 WITH NOCHECK 子句不能用于 PRIMARY KEY 和 UNIQUE 约束。

如果不想用新 CHECK 或 FOREIGN KEY 约束对现有数据进行验证,请用 WITH NOCHECK,除了个别情况,不建议这样使用。新约束将在以后的所有更新中生效。任何在添加约束时由 WITH NOCHECK 抑制的约束违规都可能导致将来的更新失败,如果这些更新操作要更新的行中包含不符合约束条件的数据。

查询优化器不考虑用 WITH NOCHECK 定义的约束。将忽略这些约束,直到使用 ALTER TABLE table CHECK CONSTRAINT ALL语句重新启用这些约束为止。

--------------------------------
这是不可能的!

#10


学习

#11


建个非唯一索引,再在这个字段上建个唯一约束,约束是允许为null的

#12


不好意思,说错了,唯一约束只能允许一行为空,多行还是不行

#1


在插入之前先判断要插入的值是否存在

#2


这个不太可能吧??
既然是唯一的索引!!又怎么可能为重复NULL呢??

#3


不可能的任务

#4


access有这个功能的

#5


書上這樣說:
設成唯一索引的字段最好也設為NOT NULL,否則只能輸入一筆為NULL的內容,再輸入第二筆NULL資料時便會發生錯誤(因為NJLL值也不可以重複)

#6


用触发器来处理

#7


应该不可以吧

#8


用触发器判断,如果为空,则不用判断
如果不为空,则判断表中是否已经存在

#9


指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。

WITH CHECK 和 WITH NOCHECK 子句不能用于 PRIMARY KEY 和 UNIQUE 约束。

如果不想用新 CHECK 或 FOREIGN KEY 约束对现有数据进行验证,请用 WITH NOCHECK,除了个别情况,不建议这样使用。新约束将在以后的所有更新中生效。任何在添加约束时由 WITH NOCHECK 抑制的约束违规都可能导致将来的更新失败,如果这些更新操作要更新的行中包含不符合约束条件的数据。

查询优化器不考虑用 WITH NOCHECK 定义的约束。将忽略这些约束,直到使用 ALTER TABLE table CHECK CONSTRAINT ALL语句重新启用这些约束为止。

--------------------------------
这是不可能的!

#10


学习

#11


建个非唯一索引,再在这个字段上建个唯一约束,约束是允许为null的

#12


不好意思,说错了,唯一约束只能允许一行为空,多行还是不行