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

Ale*_*lex 0 sql sql-server

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

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

例如:
Valid data下面:

C1 C2 C3
空值 你好 世界
你好 空值 空值
你好 世界

Invalid data 以下:

C1 C2 C3
空值 空值 空值

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

Zoh*_*led 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));
Run Code Online (Sandbox Code Playgroud)

您还可以使用COALESCE较短的代码:

ALTER TABLE <Table Name>  
WITH CHECK ADD CONSTRAINT 
<Constraint Name> CHECK (COALESCE([A],[B],[C]) IS NOT NULL);
Run Code Online (Sandbox Code Playgroud)