【问题标题】:Primary key for multiple columns?多列的主键?
【发布时间】:2016-11-08 19:59:43
【问题描述】:

我有这个 MySQL 表,主键 (ID)。

ID  | COLOR   | SIZE
====================
| 1 |   RED   | 1  |
| 2 |   RED   | 2  |
| 3 |   RED   | 3  |
| 4 |   GREEN | 1  |
| 5 |   GREEN | 2  |
| 6 |   BLUE  | 1  |
===================

例如当我插入这一行时

INSERT INTO `test`(`COLOR`, `SIZE`) VALUES (RED',1);

我有一个重复的行 1,红色,1 和 7、红、1 如何避免这个问题?

谢谢

【问题讨论】:

  • 添加唯一的颜色约束
  • @scaisEdge colorsize?
  • 您需要为color 列定义`唯一键`
  • @JuanCarlosOropeza 正确.. 谢谢
  • 究竟为什么你的意思是how to avoid this problem?因为创建UNIQUE 约束会在尝试插入第二个Red,1 时产生错误,因此会保护您的数据库表具有重复值,但是您必须在某个地方处理这些错误。

标签: mysql key


【解决方案1】:

你可以使用alter table

ALTER TABLE `test`
ADD UNIQUE (color, size)

【讨论】:

    【解决方案2】:

    在运行之前先清空表或从表中删除重复的行而不是运行它。

    ALTER TABLE  `test` ADD UNIQUE (color, size)
    

    【讨论】:

    • 我试过用 ALTER TABLE 'test ADD PRIMARY KEY (COLOR,`size`) ;.但是有一个错误。您的解决方案有效。通过添加“ INSERT IGNORE INTO ”。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 2010-10-18
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多