Sea*_* K. 6 sql-server constraint sql-server-2012 check-constraints
我有一个正在迁移到 SQL Server 的旧 Access 表,其中有一个名为“LinkedID”的字段。这个字段在大约 5 年前大部分时间都没有使用,因此对于许多历史记录,它要么为空,要么默认为“00000000”。但是,展望未来,我们希望将其设置为不允许重复值(假设 1,000 条记录为空,500 条记录为“00000000”,大约 10,000 条是我们想要的实际唯一值)。
调查它,因为我有多个记录设置为“00000000”和多个为空,我知道我不能使用唯一约束。有没有一种方法可以创建一个检查约束来检查插入/更新的值是否唯一(如果不是全部为 0 或为空)?或者如果它不能通过检查约束工作,我的另一个想法是可能使用插入/更新触发器以某种方式验证数据?
ype*_*eᵀᴹ 11
您可以为此使用过滤的唯一索引:
CREATE UNIQUE INDEX LinkedID_Unique_except_Zeroes_or_Null
ON dbo.oldAccessTable (LinkedID)
WHERE LinkedID <> '00000000' ;
Run Code Online (Sandbox Code Playgroud)
条件 ( LinkedID <> '00000000'
) 满足这两个要求,即具有'00000000'
或 的行NULL
被忽略并且不存储在索引中,因此不会检查它们的唯一性。
归档时间: |
|
查看次数: |
899 次 |
最近记录: |