【问题标题】:Keep from creating duplicate entry above zero避免创建高于零的重复条目
【发布时间】:2012-06-07 10:07:34
【问题描述】:

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

有没有办法为此目的使用CONSTRAINT

【问题讨论】:

  • NULL 可能是我猜的一个选项,你有什么想法?
  • 正是你自己回答的:)

标签: mysql constraints unique


【解决方案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 以上。这个解决方案的美妙之处在于它感觉更“专业”,没有不必要的逻辑。

【讨论】:

  • 如果您想禁止负值,请设置为myfield INT UNSIGNED
  • 那将是一个有益的贡献。
猜你喜欢
  • 1970-01-01
  • 2012-08-24
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 2015-01-10
  • 1970-01-01
相关资源
最近更新 更多