目前我有一个带有primarykey、column1和column2的table1。我的目标是,在将数据插入表之前检查column1+column2是否唯一。
示例:表中的当前数据
**Primary key column1 column2**
1 1 banana
2 NULL NULL
3 2 NULL
4 1 NULL
应成功插入以下数据:
**Primary key column1 column2**
5 1 apple
6 3 banana
7 4 NULL
如果未能插入以下数据:
**Primary key column1 column2**
8 1 banana
9 2 NULL
我想使这两个文件唯一,但我不能,因为我不能填补空值的数据现在。输入图像描述这里
3条答案
按热度按时间zzzyeukh1#
您可以将表定义为:
请参见在sql<>fiddle上运行示例。
重要提示:您在SQLServer中看到的行为偏离了sql标准——我甚至认为这是错误的。sql server考虑
NULL
作为一个真正的独特价值,但它不应该;在sql中null
意思是“一个存在但缺失的值,而不是没有值”。相比之下,我所知道的所有其他数据库NULL
作为一个非值,一个缺失的值,不能与另一个进行比较NULL
. 由于此异常,此解决方案只能在sql server中工作。d6kp6zgx2#
你可以用
EXCEPT
操作员:qyuhtwio3#
可以在该表上创建唯一约束。