是否可以创建数据库级限制,以防止创建一个列x INT
的行,其值已经存在并且大于0?
有没有办法将CONSTRAINT
用于此目的?
答案 0 :(得分:1)
可能的解决方案是执行以下操作:
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...
每一行在myfield
列中都有一个唯一值,但仍有可能创建行,其中此特定列中的值为NULL
,这几乎就是我想要的。我希望所有高于0的值都是唯一的,这都高于NULL
。这种解决方案的优点在于它感觉更“专业”,没有不必要的逻辑。