在 SQL Server Mgmt Studio 中,为什么在表重命名时触发器不会自动更新?

leo*_*ora 4 trigger sql-server

上周我遇到了一个问题,我们在 SQL Server 中重命名了一堆表,但它破坏了一堆触发器。我本来希望 SQL Server Mgmt Studio 足够聪明来更新这些触发器,但显然不是。是我期待太多了吗?有没有办法检测触发器引用不再存在的表(或列)的这些问题?

Mar*_*ith 7

在 SSMS 中尝试以下操作..

CREATE TABLE [dbo].[T]
  (
     X INT
  );

GO

CREATE TRIGGER [dbo].[TR]
ON [dbo].[T]
FOR INSERT
AS
    SELECT *
    FROM   [dbo].[T] 
Run Code Online (Sandbox Code Playgroud)

然后将表重命名为 T2 并编写触发器脚本返回以下内容,因此我假设您指的是第二个表引用。

CREATE TRIGGER [dbo].[TR]
ON [dbo].[T2]
FOR INSERT
AS
    SELECT *
    FROM   [dbo].[T] 
Run Code Online (Sandbox Code Playgroud)

如果您使用 SQL Server Data Tools 来管理您的数据库架构,而不是直接在 SSMS 中进行架构更改,那么这确实需要重命名重构。它不是 100% 全面的,因为您仍然需要查看动态 SQL 中的任何可能用法或外部脚本中对表的引用,但它可以解决上述问题。

在此处输入图片说明