我目前在MySQL数据库上运行以下SQL语句:
INSERT INTO `Table` (`Col1`, `Col2`, `Col3`) VALUES ('a','b','c')
ON DUPLICATE KEY UPDATE `Col1`=`Col1`, `Col2`=`Col2`, `Col3`=`Col3`
但是,每次我运行它时,都会收到以下错误:#1205 - Lock wait timeout exceeded; try restarting transaction
。这太可怕了,因为我不知道到底出了什么问题。我的目的是更新现有行的所有值(id
除外,这是表的主键)。
如果您有任何想法,请告诉我!
编辑:更多信息... id
是一个自动递增的字段。还有另一个UNIQUE
列(我们称之为IdentityNo
,所以我希望声明要做的是: 1.如果{{1}中没有冲突,则插入} , 2.如果发生冲突,请更新现有行(不更改IdentityNo
)。
答案 0 :(得分:0)
如果要引用上述语句的insert部分中列的值,则需要使用值(column_name)。
你必须使用类似的东西
INSERT INTO
Table
(Col1
, Col2
, Col3
) VALUES ('a','b','c')
ON DUPLICATE KEY UPDATE Col1
=values(Col1), Col2
=values(Col2), Col3
=values(Col3)