这是我在 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
的另一行。如果您还希望它们是唯一的,则可以为 value1
和 value2
创建唯一索引。
该行为与您指定的不完全相同。如果您尝试插入具有现有 _id
的任何行——不管其他列中的值如何——那么将发生错误。如果愿意,您可以使用 insert ignore
或 on duplicate key update
绕过错误。
关于Mysql - 如果存在整个相同的行,则在插入新行时忽略警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699133/