如何计算受级联影响的行

时间:2016-01-26 09:22:11

标签: java mysql jdbc sql-delete cascading-deletes

我们说我有两张桌子A和B. 表B具有引用表A的主键的外键。 并且外键具有删除级联'约束

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

如何知道受删除级联约束影响的表B的行数? 我必须在Java Application中获取该数字。 连接对象或某些东西是否有任何返回它的参数或方法?

1 个答案:

答案 0 :(得分:1)

要在DELETE FROM语句之后执行,您可以使用审计表和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 ;