【发布时间】:2012-06-07 10:07:34
【问题描述】:
是否可以创建数据库级别的限制以防止创建具有列 x INT 且值已存在且大于 0 的行?
有没有办法为此目的使用CONSTRAINT?
【问题讨论】:
-
NULL 可能是我猜的一个选项,你有什么想法?
-
正是你自己回答的:)
标签: mysql constraints unique
是否可以创建数据库级别的限制以防止创建具有列 x INT 且值已存在且大于 0 的行?
有没有办法为此目的使用CONSTRAINT?
【问题讨论】:
标签: mysql constraints unique
一种可能的解决方案是执行以下操作:
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 以上。这个解决方案的美妙之处在于它感觉更“专业”,没有不必要的逻辑。
【讨论】:
myfield INT UNSIGNED