插入行同时避免在MySQL中重复

时间:2015-01-23 21:08:57

标签: mysql insert duplicates

$sql = "INSERT IGNORE INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')";
由于id列递增,

..继续创建新行,如何使SKU唯一,以便检查SKU值是否存在,然后UPDATE代替INSERT {{1}}。

1 个答案:

答案 0 :(得分:3)

在您不希望允许重复的列上添加唯一键:

ALTER TABLE product ADD UNIQUE KEY (reference);

完成此操作后,您可以使用ON DUPLICATE KEY UPDATE子句更新行,而不是忽略INSERT

INSERT INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')
ON DUPLICATE KEY UPDATE 
    description = VALUES(description),
    price = VALUES(price),
    created_at = VALUES(created_at),
    updated_at = VALUES(updated_at)

VALUES子句中使用ON DUPLICATE KEY获取在新行的INSERT期间分配的值。