检查任一列是否在 SQL 中插入数据时具有值

时间:2021-07-26 11:36:42

标签: sql sql-server

我有一个场景,我在一个表中有 3 列 C1, C2, C3 所有 NVARCHARNULLABLE
我正在使用 SQL Server。

问题在于插入我需要检查的数据是否至少有 1 列中有数据。

例如:
Valid data 如下:

<头>
C1 C2 C3
NULL 你好 世界
你好 NULL NULL
你好 亲爱的 世界

Invalid data 如下:

<头>
C1 C2 C3
NULL NULL NULL

是否可以在插入操作上添加这样的检查?

1 个答案:

答案 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);