gpt4 book ai didi

php - 插入前检查记录是否存在

转载 作者:可可西里 更新时间:2023-10-31 23:59:47 25 4
gpt4 key购买 nike

我有一个 php 脚本可以将新部分插入到 postgres 数据库中。我想在创建零件之前检查它是否存在。我怎样才能做到这一点。我正在使用通常的 INSERT INTO 子句。

最佳答案

您首先SELECT,以了解您是否必须INSERTUPDATE,例如:

if (
$db->fetchOne(
'SELECT COUNT(1) FROM parts WHERE article_number = ?',
$p->article_number
)
) {
$db->update(
'parts',
$p->to_array(),
$db->quoteInto('article_number = ?', $p->article_number)
);
}
else {
$db->insert('parts', $p->to_array());
}

Re Milen 的评论:非常棒!使用默认的 PostgreSQL 事务隔离级别(READ COMMITTED),另一个进程可能会在您的 SELECT 之后但在您的 INSERT 之前插入(并提交)“您的”部分

对于我们构建的这类应用程序,我们通常只是捕获数据库异常,然后对其进行处理(通知用户,重试)。或者您可以使用 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE。参见 Transaction Isolation .

关于php - 插入前检查记录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com