在DUPLICATE KEY上设置UNIQUE优先级

时间:2013-06-18 16:38:41

标签: php mysql

我有下表

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。

我该如何调整?

1 个答案:

答案 0 :(得分:2)

您告诉INSERT查询,当它找到重复的(UNIQUE)密钥时,请更新该行。

您正在插入(2012, 'TEST', 1)。这是一个重复的密钥; name, activation密钥,您的第二个UNIQUE密钥!您已经有一行'TEST', 1; id=1的行。

INSERT查询会更新该行,因为它是重复的密钥。

您需要修改表格上的键,以便它反映您想要的数据。您希望INSERT查询考虑重复内容是什么?根据该密钥创建UNIQUE密钥。