是否可以创建数据库级别的限制以防止创建具有x INT
已存在且大于 0 的值的列的行?
有没有办法CONSTRAINT
用于此目的?
一个可能的解决方案是执行以下操作:
CREATE TABLE test
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
myfield INT,
CONSTRAINT check_myfield UNIQUE ( myfield )
);
现在,该列myfield
可能为 NULL。所以当我们做以下的时候,一共会出现0个错误。
INSERT INTO `test` VALUES ( '', '1' );
INSERT INTO `test` VALUES ( '', '0' );
INSERT INTO `test` VALUES ( '', '5' );
INSERT INTO `test` VALUES ( '', '7' );
etc, you get the point...
每一行在 column 中都有一个唯一的值myfield
,但是仍然有可能创建该特定列中的值NULL
几乎正是我想要的值的行。我希望所有高于 0 的值都是唯一的,这都是上面的NULL
。这个解决方案的美妙之处在于它感觉更“专业”,没有不必要的逻辑。