我有下表
id year name activation
1 2013 TEST 1
id A_I
year, name UNIQUE
name, activation UNIQUE
我使用此查询来INSERT / UPDATE数据:
INSERT INTO LISTE_DATI
(year, name, activation)
VALUES
('$varray[1]', '$varray[2]', '$varray[3]')
ON DUPLICATE KEY UPDATE
year= '$yr',
name= '$na',
activation= '$act'
如果我将这些数据发送到表格中:
$yr = 2014
$na = TEST
$act = 0
表中的查询INSERT
数据。这对我来说没问题!
如果我将这些数据发送到表格中:
$yr = 2015
$na = TEST
$act = 1
查询UPDATES
表格中的第一行(2013/TEST/1)
。
在这种情况下,我也想要一个INSERT。
我该如何调整?
答案 0 :(得分:2)
您告诉INSERT
查询,当它找到重复的(UNIQUE
)密钥时,请更新该行。
您正在插入(2012, 'TEST', 1)
。这是一个重复的密钥; name, activation
密钥,您的第二个UNIQUE
密钥!您已经有一行'TEST', 1
; id=1
的行。
INSERT
查询会更新该行,因为它是重复的密钥。
您需要修改表格上的键,以便它反映您想要的数据。您希望INSERT
查询考虑重复内容是什么?根据该密钥创建UNIQUE
密钥。