如何计算受级联影响的行

How to count rows affected by cascade

假设我有两个表 A 和 B。 Table B 有一个引用 Table A 的主键的外键。 并且外键有 'on delete cascade' 约束。

而且我也在使用 Java 和 JDBC 来访问这个数据库。

我如何知道 Table B 的行数受删除级联约束的影响? 我必须在 Java 应用程序中获取号码。 连接对象或其他东西是否有任何参数或方法 returns 它?

要遵循 DELETE FROM 语句,您可以使用审计 table 和 BEFORE DELETE 触发器。

// change type of deleted_id to your primary key's type.
create table deleted_audit ( deleted_id BIGINT, dt TIMESTAMP, count INT );

DELIMITER $$

CREATE TRIGGER count_deleted BEFORE delete ON a 
FOR EACH ROW 
BEGIN
   DECLARE count_items INT;
   SELECT count(*) FROM b WHERE a_id=OLD.id INTO count_items;
   INSERT INTO deleted_audit VALUES( OLD.id, NOW(), count_items);
END; $$

DELIMITER ;