SQL语句:当未在要插入的字段中指定主键时,“按键插入更新”无法按预期工作

时间:2019-02-06 03:01:25

标签: mysql sql insert-into

您好,我正在使用“ INSERT ON DUPLICATE KEY UPDATE” SQL语句来更新数据库。

一切正常,因为我总是这样插入一个唯一的ID:

INSERT INTO devices(uniqueId,name) 
    VALUES (4,'Printer') 
    ON DUPLICATE KEY UPDATE name = 'Central Printer';

但是现在,我需要插入元素,但是我不插入唯一的ID,我只插入或更新这样的值:

INSERT INTO table (a,b,c,d,e,f,g)
    VALUES (2,3,4,5,6,7,8) 
    ON DUPLICATE KEY
        UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;

不得不说,总是在我插入一行时才会生成自动增量主键。

我的问题是,由于我没有在sql语句中显式插入主键或唯一ID,因此现在插入的行已重复。

我该怎么办?

例如,也许我需要显式插入主键?我想使用这个主要的自动增量键。

对于戈登的建​​议,我正在添加一个样品盒,您可以在下一张图片中看到 Rows Output

在这种情况下,我添加了前三行,然后尝试使用不同的信息再次更新前三行。...好吧,我看到了错误...没有可比较的键... ...:$

感谢您的回答

1 个答案:

答案 0 :(得分:1)

如果要防止重复列,请在它们上创建唯一索引或约束。例如:

create unique index unq_table_7 on table(a, b, c, d, e, f, g);

这将确保7列(组合在一起)是唯一的。