在 MySQL 中插入行同时避免重复
Inserting row while avoiding duplicated in MySQL
$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
。
在您不想允许重复的列上添加唯一键:
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)
在 ON DUPLICATE KEY
子句中使用 VALUES
获取在新行的 INSERT
期间分配的值。
$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
。
在您不想允许重复的列上添加唯一键:
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)
在 ON DUPLICATE KEY
子句中使用 VALUES
获取在新行的 INSERT
期间分配的值。