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

标签 mysql sql

这是我在 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有没有什么简洁的语句可以让我干些烂活?

最佳答案

你似乎想要一个关于 _id 的唯一索引:

create unique index unq_table_id on table(_id);

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

该行为与您指定的不完全相同。如果您尝试插入具有现有 _id任何行——不管其他列中的值如何——那么将发生错误。如果愿意,您可以使用 insert ignoreon duplicate key update 绕过错误。

关于Mysql - 如果存在整个相同的行,则在插入新行时忽略警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699133/

相关文章:

php - cakephp 从 5.4 迁移到 5.3 时出现 mysql 编码问题

php - 如何找出用户上传文件的字符集?

mysql - 如何检查一致性约束,该约束显示用户不属于他们应该属于的属性?

mysql - 使用 OLD.id 以外的 ID 触发

sql - 最佳计算问题数据库

php - 如何比较php中mysql查询的时间?

mysql - 在 MySQL 中存储和访问庞大数据矩阵的最有效方法

MySQL ORDER BY 列 ASC 包含两个未正确按字母顺序排列的单词

sql - 如何在另一个表中查找缺少属性 ID 的记录 ID

sql - 经典 ASP while 循环显示错误