Sql 声明:当要插入的字段中未指定主键时,插入键更新无法按预期工作
Sql Statement: Insert On Key Update is not working as expected when primary key is not specified in the fields to insert
您好,我正在使用 "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
在这种情况下,我添加了前三行,然后尝试用不同的信息再次更新前三行...。好的,我看到了错误...没有要比较的键。 ..... :$
感谢您的回答,
如果要防止列重复,则在它们上创建唯一索引或约束。例如:
create unique index unq_table_7 on table(a, b, c, d, e, f, g);
这将保证 7 列组合起来是唯一的。
您好,我正在使用 "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
在这种情况下,我添加了前三行,然后尝试用不同的信息再次更新前三行...。好的,我看到了错误...没有要比较的键。 ..... :$
感谢您的回答,
如果要防止列重复,则在它们上创建唯一索引或约束。例如:
create unique index unq_table_7 on table(a, b, c, d, e, f, g);
这将保证 7 列组合起来是唯一的。