【发布时间】:2017-07-10 14:54:42
【问题描述】:
我的脚本包含在开始事务和提交事务中。 我什至不能在中间使用 Go。 在脚本中,我想禁用一个触发器,然后想创建另一个触发器 但是当我同时执行这两个语句时,我得到了以下错误:
消息 111,级别 15,状态 1,第 6 行“CREATE TRIGGER”必须是查询批处理中的第一条语句。
我的代码是:
BEGIN TRY
BEGIN TRANSACTION
DISABLE TRIGGER [dbo].[trg_Beneficiary_After_Update] ON [dbo].[Beneficiary]
CREATE TRIGGER [dbo].[trg_Beneficiary_After_Update1] ON [dbo].[Beneficiary] FOR UPDATE AS
BEGIN
INSERT INTO [dbo].[Beneficiary_History]([Beneficiary_Id],[Customer_Id],[Beneficiary_Type],[Nick_Name],[Rib_Key],[Action_Flag],[Benef_No],[Original_Date],[Provider_Id],[Create_Date])
SELECT [Beneficiary_Id],[Customer_Id],[Beneficiary_Type],[Nick_Name],[Rib_Key],'U',[Benef_No],[Create_Date],[Provider_Id],GETDATE() FROM DELETE
PRINT 'AFTER Beneficiary Table UPDATE1 trigger fired.'
END
UPDATE [dbo].[Beneficiary] SET [Benef_No] = REPLACE (Benef_No, +2120, ++212) WHERE Benef_No like '+2120%'
DISABLE TRIGGER [dbo].[trg_Beneficiary_After_Update1] ON [$(oltpdb)].[dbo].[Beneficiary] ;
ENABLE TRIGGER [dbo].[trg_Beneficiary_After_Update] ON [$(oltpdb)].[dbo].[Beneficiary]
end
COMMIT TRANSACTION END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH;
【问题讨论】:
-
需要看代码...
-
简单切换顺序?
-
我无法在此处发布代码。
-
在
CREATE TRIGGER语句之前使用GO。 -
您遗漏了一些关键概念。事务通常不适用于 DDL 命令。它们专为数据完整性而设计。
标签: sql tsql sql-server-2012