我有一个场景,我在一个表中有 3 列 C1, C2, C3
所有 NVARCHAR
和 NULLABLE
。
我正在使用 SQL Server。
问题在于插入我需要检查的数据是否至少有 1 列中有数据。
例如:
Valid data
如下:
C1 | C2 | C3 |
---|---|---|
NULL | 你好 | 世界 |
你好 | NULL | NULL |
你好 | 亲爱的 | 世界 |
Invalid data
如下:
C1 | C2 | C3 |
---|---|---|
NULL | NULL | NULL |
是否可以在插入操作上添加这样的检查?
答案 0 :(得分:5)
是的,这是可能的,甚至非常简单,但您应该使用检查约束来支持它,以防止将表更新为这种无效状态。
基本上,这样的事情可以解决问题:
ALTER TABLE <Table Name>
WITH CHECK ADD CONSTRAINT
<Constraint Name> CHECK (([A] IS NOT NULL OR [B] IS NOT NULL OR [C] IS NOT NULL));
您也可以使用 COALESCE
来表示更短的代码:
ALTER TABLE <Table Name>
WITH CHECK ADD CONSTRAINT
<Constraint Name> CHECK (COALESCE([A],[B],[C]) IS NOT NULL);