gpt4 book ai didi

php - 在 mysql 中更新/删除并获取受影响的行 ID 列表?

转载 作者:IT老高 更新时间:2023-10-29 00:19:53 24 4
gpt4 key购买 nike

是否有一种有效的方法可以从 mysql 中的 UPDATE 或 DELETE 查询中获取受影响的行 ID 列表(不是通过 PHP 的 mysql_affected_rows() 获得的受影响行数,而是实际受影响的行 ID)?

在 postgresql 中,UPDATE/DELETE 查询中有一个 RETURNING 子句,可用于指定返回的受影响行的值。

在 mysql 中,获取受影响行的“蛮力”方式似乎是:1.获取读锁。2. 使用 UPDATE/DELETE 查询的 WHERE 条件选择以获取受影响的行 ID。3. 更新/删除。4. 解除锁定。

上面的方式看起来效率很低。有没有更有效的方法来获取mysql中受影响的行id?

最佳答案

您可以创建一个 Trigger

Support for triggers is included beginning with MySQL 5.0.2. A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table.

以下代码在名为 mytable 的表上创建一个触发器,该表有一个字段 id

CREATE TRIGGER mytable_delete
AFTER DELETE ON mytable
FOR EACH ROW SET @deletedIDs = CONCAT_WS(',', @deletedIDs, OLD.id)

注意 OLD 指的是已删除的行

在表上创建触发器后,您可以按如下方式使用它:

/* empty parameter defined in CREATE TRIGGER */
Set @deletedIDs = '';
/* perform your query */
DELETE FROM mytable WHERE myotherfield = 'myfilterevalue';
/* get the parameter */
SELECT @deletedIDs AS 'Deleted_IDs';

这将返回已删除的 ID,每个 ID 在字符串中以逗号开头

关于php - 在 mysql 中更新/删除并获取受影响的行 ID 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873805/

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