1

我刚刚从表中删除了几条记录。我假设消息选项卡列出了两次“受影响的行数 x”,因为子表删除了相同数量的记录。我是这个数据库的新手,没有文档。

有没有一种简单的方法可以找到子表?

4

1 回答 1

0

如果您使用 SQL Server Management Studio,您可以右键单击表并单击“查看依赖项”。当您选择“依赖于 [TableName] 的对象”时,您将获得一个列表。如果有很多存储过程和函数,它可能会很大。您将能够很容易地发现这些表格,因为它们有一个独特的“表格”图标。

但是,如果您不能使用 SSMS,那么您将需要运行脚本。此脚本将列出具有子表和父表的所有外键:

SELECT     db_name() AS CONSTRAINT_CATALOG, user_name(c_obj.uid) AS CONSTRAINT_SCHEMA, c_obj.name AS CONSTRAINT_NAME, db_name() 
                      AS TABLE_CATALOG, user_name(t_obj.uid) AS TABLE_SCHEMA, t_obj.name AS TABLE_NAME, 
                      CASE c_obj.xtype WHEN 'C' THEN 'CHECK' WHEN 'UQ' THEN 'UNIQUE' WHEN 'PK' THEN 'PRIMARY KEY' WHEN 'F' THEN 'FOREIGN KEY' END AS CONSTRAINT_TYPE,
                       'NO' AS IS_DEFERRABLE, 'NO' AS INITIALLY_DEFERRED,
mt_obj.name AS ParentTable
FROM         sysobjects c_obj, sysobjects t_obj, sysforeignkeys sf, sysobjects mt_obj 
WHERE     permissions(t_obj.id) != 0 AND t_obj.id = c_obj.parent_obj AND c_obj.xtype IN ('F')
AND sf.constid = c_obj.id AND sf.rkeyid = mt_obj.id

顺便说一句,不排除触发的可能性

于 2013-09-19T02:13:28.003 回答