不要在零之上创建重复条目

时间:2012-06-07 10:07:34

标签: mysql constraints unique

是否可以创建数据库级限制,以防止创建一个列x INT的行,其值已经存在并且大于0?

有没有办法将CONSTRAINT用于此目的?

1 个答案:

答案 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。这种解决方案的优点在于它感觉更“专业”,没有不必要的逻辑。