2014-06-16 28 views
3

当我从我的数据库中删除一个用户时,数据库引擎也会级联删除其他表中的数据。如何返回从删除语句中使用的表名称?

DELETE FROM Users WHERE Id = 'A022408A-745B-464C-93C4-30B45C55D1E3' 

(11受影响的行(S))
(224行(一个或多个)受影响)
(1行(一个或多个)受影响)
(1行(一个或多个)受影响)
( 1行(一个或多个)受影响)
(32行(一个或多个)受影响)
(1行(一个或多个)受影响)
(56行(一个或多个)受影响)
(50行(一个或多个)受影响)
(6行(一个或多个)受影响)
(0行(或多个)受影响)
(1行(一个或多个)受影响)
(1行(一个或多个)受影响)

有一种方法来对于每个结果显示的表名,如:表约会

(影响56行(S))

+2

从information_schema获取fk定义并筛选出没有级联删除的定义。 –

+0

如果您希望将已删除的行数与表匹配,则需要设置触发器,扩展事件或类似的跟踪。 –

+1

你可以使用'SET STATISTICS IO'来查看表名。但在这种情况下,如果存在触发器,则“SET STATISTICS IO ON”将返回关于在触发器内/通过触发器访问的表的信息(逻辑和物理读取等)。 –

回答

1

这有点很长的路要走轮解决这个问题,但如何把一个触发当一行被删除时,所有表PRINT都不在表中?

与您之后的内容并不完全相同,但它会给出基本相同的信息。你甚至可以让它返回一些其他可能有用的东西,比如被删除的行的主键......