在 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 期间分配的值。