Mysql ID列上允许0和null的约束?
我有一个包含员工ID的现有列,但是当ID存在时,会引入重复项并创建多个记录(即302938492)。有些ID是空的,有些是0000000,这是允许的。我想实现一个约束,在不影响null或0的情况下禁止重复发生。有没有办法用唯一的索引来实现这一点Mysql ID列上允许0和null的约束?,mysql,indexing,constraints,unique,Mysql,Indexing,Constraints,Unique,我有一个包含员工ID的现有列,但是当ID存在时,会引入重复项并创建多个记录(即302938492)。有些ID是空的,有些是0000000,这是允许的。我想实现一个约束,在不影响null或0的情况下禁止重复发生。有没有办法用唯一的索引来实现这一点 CREATE UNIQUE NONCLUSTERED INDEX UniqueExceptNulls ON employees (employee_id) WHERE employee_id>0 OR IS NOT NULL 或者检查约束
CREATE UNIQUE NONCLUSTERED INDEX UniqueExceptNulls
ON employees (employee_id) WHERE employee_id>0 OR IS NOT NULL
或者检查约束是否有效
ALTER TABLE employees
ADD CONSTRAINT uniqueint_emplid
CHECK (employee_id>0 OR IS NOT NULL);
这是可能的。但是想怎么做我的头很痛。你不能用
索引
或约束
或检查
来完成任务。但您可以使用触发器来执行此操作。(我的头也痛了。)如果我删除了所有的空值,并用默认值0替换它们,我可以在没有空值检查的情况下实现如上所述的检查约束吗?