1

是否可以创建数据库级别的限制以防止创建具有x INT已存在且大于 0 的值的列的行?

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

4

1 回答 1

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...

每一行在 column 中都有一个唯一的值myfield,但是仍然有可能创建该特定列中的值NULL几乎正是我想要的值的行。我希望所有高于 0 的值都是唯一的,这都是上面的NULL。这个解决方案的美妙之处在于它感觉更“专业”,没有不必要的逻辑。

于 2012-06-07T11:26:56.217 回答