检查任一列是否在SQL中插入数据时具有值
我有一个场景,我在一个表中有 3 列C1, C2, C3allNVARCHAR和NULLABLE.
我正在使用 SQL Server。
问题在于插入我需要检查的数据中是否至少有 1 列有数据。
例如:
Valid data下面:
| C1 | C2 | C3 |
|---|---|---|
| 空值 | 你好 | 世界 |
| 你好 | 空值 | 空值 |
| 你好 | 亲 | 世界 |
回答
是的,这是可能的,甚至非常简单,但您应该使用检查约束来支持它,以防止将表更新到此无效状态。
基本上,这样的事情可以解决问题:
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);