如何计算受级联影响的行
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 ;
假设我有两个表 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 ;