在MySQL中,我有一个像这样的tblProject -
Project_ID Field_ID Record_ID Label 556895 1 1 Office desk 1 556895 1 2 Office desk 2 556895 2 1 This is a desk 1 556895 2 2 This is a desk 2 472246 1 1 Hello 1 472246 1 2 Hello 2 472246 2 1 This is a wooden desk 1 472246 2 2 This is a wooden desk 2
我使用sql查询(用PHP编写),它将插入一个像这样的值 -
$sql_query = "INSERT INTO Items (Project_ID, Field_ID, Record_ID, Label) VALUES ('232323', '3', '3', 'New Label')";
它正常工作。但是如果所有三个'Project_ID','Field_ID'和'Record_ID'相同,我需要更新'Label' - 如果任何一个不同,我需要插入新记录。
从记录结构中可以明显看出,此处不能选择Unique / Primary。
答案 0 :(得分:5)
为什么独特不是一种选择?只需为这三个字段创建它。
然后您可以使用ON DUPLICATE KEY UPDATE
语法。
答案 1 :(得分:3)
您可以使用INSERT...ON DUPLICATE KEY UPDATE
。但在函数正常工作之前,您需要在表上强制使用唯一键。
在这种情况下,您需要在三列上使用UNIQUE
键
ALTER TABLE Items ADD CONSTRAINT Items_uq
UNIQUE (Project_ID, Field_ID, Record_ID)
并发表此声明,
INSERT INTO Items (Project_ID, Field_ID, Record_ID, Label)
VALUES ('232323', '3', '3', 'New Label')
ON DUPLICATE KEY UPDATE
Label = 'New label'