【问题标题】:MySQL Integer column, unique values but default possibility?MySQL整数列,唯一值但默认可能性?
【发布时间】:2011-06-21 14:51:59
【问题描述】:

我想要一个包含整数列的表格,它可能会被填充,也可能不会被填充(它是一个社会安全号码)。但如果它被填满,我希望它是唯一的:不能有两个相同数字的条目。

使用唯一约束不起作用,因为整数不接受 NULL 值,并且 MySQL 检测到多个 0 值。

如何对具有默认值的整数设置唯一约束?或者如何设置整数列以接受 NULL 值? (这个问题想当然:MySQL Foreign Key Constraint - Integer Column 但我不能)

【问题讨论】:

    标签: mysql integer default unique


    【解决方案1】:
    create table test (
        myint INT NULL, UNIQUE INDEX (myint)
    );
    

    这将允许对添加的任何整数进行唯一约束,但允许输入多个 NULL 值。

    MySQL 将 NULL 视为“未知”值,因此无法进行比较以查看类似值是否已经存在“未知”!==“未知”。

    这也取决于您使用的是哪个数据库引擎,以上适用于 MyISAM 和 InnoDB

    【讨论】:

    • 使用 InnoDB。当桌子已经在那里时,我该怎么做?好像我不能这样改变它:/
    • 嗯,你应该能够发出一个改变语句 ALTER TABLE test MODIFY myint INT NULL; ALTER TABLE 测试添加唯一索引 (myint);
    【解决方案2】:

    请看下面的代码:

    ALTER TABLE test MODIFY myint INT NULL
    ALTER TABLE test ADD UNIQUE INDEX (myint)
    

    当数据输入直接来自 MySQL (PHPMyadmin) 时,它可以工作,保存为 NULL,但 php 脚本将其保存为零,因此它不允许多个条目。

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多