Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ID列上允许0和null的约束?_Mysql_Indexing_Constraints_Unique - Fatal编程技术网

Mysql ID列上允许0和null的约束?

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 或者检查约束

我有一个包含员工ID的现有列,但是当ID存在时,会引入重复项并创建多个记录(即302938492)。有些ID是空的,有些是0000000,这是允许的。我想实现一个约束,在不影响null或0的情况下禁止重复发生。有没有办法用唯一的索引来实现这一点

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替换它们,我可以在没有空值检查的情况下实现如上所述的检查约束吗?