在MySQL中插入行同时避免重复
。。由于在MySQL中插入行同时避免重复,mysql,insert,duplicates,Mysql,Insert,Duplicates,。。由于id列不断增加,因此不断创建新行,如何使SKU唯一,以便检查SKU值是否存在,然后UPDATE而不是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
在不允许重复的列上添加唯一键:
$sql = "INSERT IGNORE INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')";
完成此操作后,可以使用ON DUPLICATE KEY UPDATE
子句更新行,而不是忽略INSERT
ALTER TABLE product ADD UNIQUE KEY (reference);
在
ON DUPLICATE KEY
子句中使用VALUES
可拾取在插入新行的过程中分配的值。在不允许重复的列上添加唯一键:
$sql = "INSERT IGNORE INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')";
完成此操作后,可以使用ON DUPLICATE KEY UPDATE
子句更新行,而不是忽略INSERT
ALTER TABLE product ADD UNIQUE KEY (reference);
在ON DUPLICATE KEY
子句中使用VALUES
可拾取在插入新行的过程中分配的值。在不允许重复的列上添加唯一键:
$sql = "INSERT IGNORE INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')";
完成此操作后,可以使用ON DUPLICATE KEY UPDATE
子句更新行,而不是忽略INSERT
ALTER TABLE product ADD UNIQUE KEY (reference);
在ON DUPLICATE KEY
子句中使用VALUES
可拾取在插入新行的过程中分配的值。在不允许重复的列上添加唯一键:
$sql = "INSERT IGNORE INTO product (reference, description, price, created_at, updated_at)
VALUES ('{$sku}', '{$description}', '{$price}', '{$created_at}', '{$updated_at}')";
完成此操作后,可以使用ON DUPLICATE KEY UPDATE
子句更新行,而不是忽略INSERT
ALTER TABLE product ADD UNIQUE KEY (reference);
使用重复键上的子句中的值
拾取在插入新行的过程中分配的值。在参考
列上添加一个唯一的索引,使用ALTER TABLE
或创建索引
。您可以使用。SQL等价物应该是MERGE
,但MySQL似乎不支持这种做法。@AnthonyForloney如果没有唯一索引,那么在重复键上的就什么也做不了。是的,我正在阅读,但不太明白如何使用。只是在学习MySQL(@Ismaestro所有这些答案都假设您已经有一个唯一的键。它们没有首先说明如何创建唯一的键。在参考
列中添加一个唯一的索引,使用ALTER TABLE
或create index
。您可以使用。SQL等价物是合并
,但这似乎不是sMySQL内部支持。@AnthonyForloney如果没有唯一索引,在重复键上的将不会做任何事情。是的,我正在阅读,但不太了解如何使用。只是学习MySQL:(@Ismaestro所有这些答案都假设您已经有一个唯一的键。它们没有首先说明如何创建唯一的键。在参考
列中添加一个唯一的索引,使用ALTER TABLE
或create index
。您可以使用。SQL等价物是合并
,但这似乎不是sMySQL内部支持。@AnthonyForloney如果没有唯一索引,在重复键上的将不会做任何事情。是的,我正在阅读,但不太了解如何使用。只是学习MySQL:(@Ismaestro所有这些答案都假设您已经有一个唯一的键。它们没有首先说明如何创建唯一的键。在参考
列中添加一个唯一的索引,使用ALTER TABLE
或create index
。您可以使用。SQL等价物是合并
,但这似乎不是sMySQL内部支持。@AnthonyForloney如果没有唯一索引,在重复键上的将不会做任何事情。是的,我正在阅读,但不太了解如何使用。只是学习MySQL:(@Ismaestro所有这些答案都假设您已经有一个唯一的键。他们没有首先说明如何创建唯一的键。这只做一次?或者每次我进行查询时?只做一次。索引是架构的一部分。您需要唯一的键加。奇怪的问题。尽管$conn->query($sql)==TRUE)
通过并报告成功创建的行
,但我在数据库中没有看到太多条目。例如,0213A5
,它不在数据库中。我也是mysqli\u real\u escape\u string
导致错误的字符串。我找到了它。有一个警告:mysqli\u real\u escape\u string()只需要2个参数,1个给定的
,所以我将其更改为$description\u safe=mysqli\u real\u escape\u string($conn,$description);
这只需执行一次?或者每次我进行查询?只需一次。索引是架构的一部分。您需要唯一的加键。奇怪的问题。尽管$conn->query($sql)==TRUE)
通过并报告成功创建的行
,但我在数据库中没有看到太多条目。例如,0213A5
,它不在数据库中。我也是mysqli\u real\u escape\u string
导致错误的字符串。我找到了它。有一个警告:mysqli\u real\u escape\u string()只需要2个参数,1个给定的
,所以我将其更改为$description\u safe=mysqli\u real\u escape\u string($conn,$description);
这只需执行一次?或者每次我进行查询?只需一次。索引是架构的一部分。您需要唯一的加键。奇怪的问题。尽管$conn->query($sql)==TRUE)
通过并报告成功创建的行
,但我在数据库中没有看到太多条目。例如,0213A5
,它不在数据库中。我也是mysqli\u real\u escape\u string
导致错误的字符串。我找到了它。有一个警告:mysqli\u real\u escape\u string()只需要2个参数,1个给定
,因此我将其更改为$desc