2016-09-06 52 views
1

我有一个很好的触发器。但是,我发现如果使用应用程序GUI更新项目,触发器将不允许它在GUI中工作,除非我在多个数据库中创建项目,触发器更新。SQL Server triger,只有在另一个数据库中存在时才会更新

基本上我想要触发器运行,但要么出错或停止,如果在触发器更新的其他3个数据库中不存在相同的UID。

这是我目前的触发器。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER TRIGGER [dbo].[trgSecPIN] 
ON [dbo].[cat_validation] 
FOR UPDATE 
AS 
    UPDATE [eqcas02].[dbo].[cat_validation] 
    SET secondarypin = I.secondarypin 
    FROM [eqcas02].[dbo].[cat_validation] 
    JOIN inserted I ON [eqcas02].[dbo].[cat_validation].[name] = I.name 

    UPDATE [eqcas03].[dbo].[cat_validation] 
    SET secondarypin = I.secondarypin 
    FROM [eqcas03].[dbo].[cat_validation] 
    JOIN inserted I ON [eqcas03].[dbo].[cat_validation].[name] = I.name 

    UPDATE [eqcas04].[dbo].[cat_validation] 
    SET secondarypin = I.secondarypin 
    FROM [eqcas04].[dbo].[cat_validation] 
    JOIN inserted I ON [eqcas04].[dbo].[cat_validation].[name] = I.name 
+2

检查'IF EXISTS'在你的'UPDATE'之前 – techspider

+0

所以我想在UPDATE之前添加这样的东西? IF EXISTS(SELECT [name] FROM [eqcas02]。[dbo]。[cat_validation] WHERE [name] = [name]或者这个完全不正确? – LazySmerf

+0

我明白了......我错过了...'SET NOCOUNT on' – LazySmerf

回答

0
FOR UPDATE 
AS 
SET NOCOUNT on 

一旦我加入了NOCOUNT一切都已经正常工作。

相关问题