2

我有下表

id   year   name   activation
1    2013   TEST   1

id A_I
year, name UNIQUE
name, activation UNIQUE

我使用这个查询来插入/更新数据:

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。

我该如何调整它?

4

1 回答 1

2

您告诉您的INSERT查询,当它找到重复的 ( UNIQUE) 键时,改为更新该行。

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

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

您需要修改表上的键,以便它反映您想要的数据。您希望INSERT查询考虑重复什么?UNIQUE在此基础上创建您的密钥。

于 2013-06-18T16:48:47.537 回答