mysql-插入新行时忽略警告,如果同一行已经存在

nimxete2  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(320)

这是我在stackoverflow的第一个问题,我不是以英语为母语的人。如果我问得不好,请容忍我。
假设我有一张table _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中有没有简洁的语句可以让我做一些糟糕的工作?

irlmq6kh

irlmq6kh1#

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

create unique index unq_table_id on table(_id);

然后,您将无法插入具有相同属性的另一行 _id . 可以为创建唯一索引 value1 以及 value2 如果你也希望这些是独一无二的。
行为与您指定的不完全相同。如果尝试插入任何具有现有 _id --不管其他列中的值是多少,都会发生错误。您可以使用绕过错误 insert ignore 或者 on duplicate key update ,如果你愿意的话。

相关问题