Sql语句:在要插入的字段中未指定主键时,插入键更新未按预期工作

问题描述 投票:0回答:1

您好我正在使用“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。

我该怎么办?

例如,我可能需要明确插入主键吗?我想使用这个主要自动增量密钥。

对于Gordon的推荐,我正在添加一个示例案例,您可以在下一张图片Rows Output中看到

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

谢谢你的回答,

mysql sql insert-into
1个回答
1
投票

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

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

这将保证7列 - 组合 - 是唯一的。

© www.soinside.com 2019 - 2024. All rights reserved.