gpt4 book ai didi

php - 插入时如果 "title"已经存在于表中则更新记录

转载 作者:行者123 更新时间:2023-11-28 23:42:38 25 4
gpt4 key购买 nike

我的 MySql 数据库中有这样的 tag 表。

Id    Title    RepeatCount
--------------------------
1 Tag1 1
2 Tag2 5
3 Tag3 8

我想在 PDO 的表中插入记录,如果具有相同 Title 的记录不存在(Title 是主键),如果存在,则增加记录 RepeatCount

像这个例子:

prepare(
"IF (:Title IN (SELECT Title FROM tag))
THEN INSERT INTO tag (Title) VALUES (:Title)
ELSE UPDATE tag SET RepeatCount = RepeatCount + 1"
);
execute(array(
":Title" => "MyTag"
));

最佳答案

在MySQL SQL中,if等控制流语句只在存储 block 中有效,如存储过程、函数、触发器等。执行此过程的更好方法是使用 on duplicate key update:

insert into tag(Title)
values (:Title)
on duplciate key update RepeatCount = RepeatCount + 1;

这样更好,因为数据库会处理竞争条件,因此您不必担心值被覆盖。注意:这假设 RepeatCount 被初始化为一个数字而不是 NULL

关于php - 插入时如果 "title"已经存在于表中则更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104485/

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