You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL表定义时如何一步创建允许空值的唯一过滤约束?

一步创建带允许空值的唯一约束的表

好问题!确实,在SQL Server里没法直接把带过滤条件的唯一索引(也就是你说的允许空值的唯一约束)作为表约束的一部分,直接写在CREATE TABLE语句里,但我们可以通过在同一个SQL批处理中同时创建表和过滤唯一索引的方式,实现“一步完成”的效果,不用分两次手动执行操作。

完整的一步执行脚本

CREATE TABLE MyTable ( 
    [Id] INT NOT NULL, 
    [ColumnA] INT NULL, 
    [ColumnB] INT NULL, 
    CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID] ASC) 
);
CREATE UNIQUE INDEX [MyNullableIndex] ON MyTable (ColumnA, ColumnB) 
WHERE ColumnA IS NOT NULL AND ColumnB IS NOT NULL;

说明

把表创建语句和索引创建语句放在同一个脚本里一次性执行,效果和你原来分两步操作完全一致。这个过滤索引的逻辑也完全符合你的需求:只有当ColumnA和ColumnB都不为空时,它们的组合值必须唯一;只要其中任意一个字段为空,就不会触发唯一约束的校验。

内容的提问来源于stack exchange,提问作者vbullinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:23:25