首页 文章

Mysql - 如果存在整个行,则在插入新行时忽略警告

提问于
浏览
0

这是我在stackoverflow中的第一个问题,我不是英语母语人士 . 如果我不好问,请跟我说 .

假设我有一个表, _id 是主键 .

| _id | value1 | value2 |
|-----|--------|--------|
|   1 |  apple | banana |
|   2 | orange |  melon |

我希望:

  • 如果我尝试查询 INSERT INTO table_name (_id, value1, value2) VALUES (1, 'apple', 'banana') ,那么没有任何反应,因为整行是相同的 .

  • 如果我尝试查询 INSERT INTO table_name (_id, value1, value2) VALUES (2, 'apple', 'tomato') 然后我收到警告,因为至少存在一个不相等的列 .

在mysql中是否有任何简洁的声明,以便我可以做吮吸工作?

1 回答

  • 0

    您似乎想要 _id 上的唯一索引:

    create unique index unq_table_id on table(_id);
    

    然后,您将无法插入具有相同 _id 的另一行 . 如果您还希望这些索引是唯一的,则可以为 value1value2 创建唯一索引 .

    行为并不完全是您指定的行为 . 如果您尝试插入具有现有 _id 的任何行 - 无论其他列中的值如何 - 那么将发生错误 . 如果您愿意,可以使用 insert ignoreon duplicate key update 绕过错误 .

相关问题