有没有一种有效的方法可以从mysql的UPDATE或DELETE查询中获取受影响行的ID列表(不是通过PHP的mysql_affected_rows()返回受影响行数,而是实际受影响的行的ID)?
在PostgreSQL中,UPDATE/DELETE查询内有一个RETURNING子句,可用于指定返回受影响行的值。
在mysql中,获取受影响行的'暴力方式'似乎是: 1. 获取读锁。 2. 带有UPDATE/DELETE查询的WHERE条件的SELECT,以获取受影响的行ID。 3. 进行UPDATE/DELETE操作。 4. 释放锁。
以上方式似乎非常低效。是否有更有效的方法在mysql中获取受影响行的ID?
CREATE TRIGGER mytable_delete AFTER DELETE ON mytable FOR EACH ROW SET @deletedIDs = TRIM(LEADING ',' FROM CONCAT_WS(',', @deletedIDs, OLD.id))
这将删除前导逗号。 - Sirio