【发布时间】:2021-07-13 06:59:34
【问题描述】:
我们有一个为每个客户创建数据库的存储过程。此存储过程在 master 的上下文中运行。数据库名称作为参数传递给存储过程。
我正在尝试修改存储过程以向表中添加触发器。我了解存储过程必须切换到新数据库才能创建触发器,因此在存储过程中附加了以下内容:
SET @str = ('USE ' + QUOTENAME (@db_name) + ' GO
CREATE TRIGGER ...')
EXEC (@str);
我得到了错误
消息 102,第 15 级,状态 1,第 3 行
'GO' 附近的语法不正确。消息 111,第 15 级,状态 1,第 4 行
'CREATE TRIGGER' 必须是查询批处理中的第一条语句。
现在我假设第二个错误是第一个错误的结果,但如果我能弄清楚如何在存储过程中切换数据库以创建触发器,我会感到震惊。
我们使用的是 SQL Server 2019。如何在创建数据库存储过程中创建触发器?
【问题讨论】:
标签: sql sql-server tsql triggers dynamic-sql