MySQL存在记录被更新,并且插入到记录中的SQL不存在。
插入表格(auto_id,auto_name)值(1,XX)重复密钥更新auto_name = 'yourname
使用重复密钥更新
如果在重复密钥更新和插入行上指定,它将在唯一索引或主键中产生重复的值,然后执行旧行更新。例如,如果列A被定义为唯一且包含值1,则以下两个语句具有相同的效果:
复制代码代码如下所示:
MySQL >插入表格(A,B,C)值(1,2,3)
重复密钥更新C = C + 1 - >关于;
更新表集C=C + 1,其中a = 1;
如果将行插入为新记录,则受影响行的值为1;如果更新原始记录,则受影响行的值为2。
注意:如果列B是唯一的列,则插入等同于UPDATE语句:
复制代码代码如下所示:
更新表集C = C + 1,其中A = 1或B = 2限制1;
如果a = 1或b = 2匹配多行,则只更新一行。一般来说,您应该避免使用带有多个关键字的表使用重复关键字子句。
你可以使用价值(col_name)功能在更新条款引用列的值从插入的插入部分…UPDATE语句。换句话说,如果没有重复的关键字冲突,价值观(col_name)在更新条款是指可以插入col_name.this函数值,特别适用于多行插入的值()函数仅在插入有意义…UPDATE语句,并在其他时间返回null。
实例:
复制代码代码如下所示:
MySQL >插入表格(A,B,C)值(1,2,3),(4,5,6)
复制密钥更新>关于C =值(a)+值(b);
本声明与以下两项声明相同:
复制代码代码如下所示:
MySQL >插入表格(A,B,C)值(1,2,3)
重复密钥更新C = 3 - >关于;
MySQL >插入表格(A,B,C)值(4,5,6)
重复密钥更新C = 9 - >关于;
当您使用重复密钥更新时,延迟选项将被忽略。