2016-01-20 59 views
0

我想寫一個觸發器從db1db2觸發更新,在2級不同的數據庫

這樣的關係,更新表的表中的相關表格;

ALTER TRIGGER [dbo].[TR_PERSONAS] 
ON [dbo].[Personas] 
AFTER UPDATE 
AS 
BEGIN 
    UPDATE [AXData].[dbo].[TEmployee] 
    SET 
     [EmployeeCode] = [Numero_Documento], 
     [EmployeeName] = [Nombres], 
     [EnglishName] = [Apellidos], 
     [CardNo] = [Codigo], 
     [pin] = 1234, 
     [EmpEnable] = [Estado], 
     [Sex] = 'false', 
     [Birthday] = CAST(0x0000890400000000 AS DATETIME), 
     [Deleted] = 0, 
     [Leave] = 0, 
     [BeKQ] = 1, 
     [MapVisible] = 1, 
     [ShowCardNo] = 1, 
     [RegDate] = [Fecha_Hora], 
     [EndDate] = [FechaVence], 
     [Status] = [Estado], 
     [DeptID] = [Tipo], 
     [JobID] = [Id_Centro_Costos], 
     [TimeStamp] = GETDATE() 
    FROM 
     [AXData].[dbo].[TEmployee] 
    INNER JOIN 
     [ControlSuite].[dbo].[Personas] ON [ControlSuite].[dbo].[Personas].[Id_Persona] = [AXData].[dbo].[TEmployee].[EmployeeID] 
    WHERE 
     [AXData].[dbo].[TEmployee].[EmployeeID] = updated.[Personas].[Id_Persona]; 
END; 

,但我得到這個錯誤:

The multi-part identifier "updated.Personas.Id_Persona" could not be bound

我在做什麼錯?

回答

1

只有inserted和deleted沒有更新的表。

試試這個:

ALTER TRIGGER [dbo].[TR_PERSONAS] ON [dbo].[Personas] 
AFTER UPDATE 
AS 
BEGIN 

    UPDATE [AXData].[dbo].[TEmployee] 
     SET 
      [EmployeeCode] = [Numero_Documento], 
      [EmployeeName] = [Nombres], 
      [EnglishName] = [Apellidos], 
      [CardNo] = [Codigo], 
      [pin] = 1234, 
      [EmpEnable] = [Estado], 
      [Sex] = 'false', 
      [Birthday] = CAST(0x0000890400000000 AS DATETIME), 
      [Deleted] = 0, 
      [Leave] = 0, 
      [BeKQ] = 1, 
      [MapVisible] = 1, 
      [ShowCardNo] = 1, 
      [RegDate] = [Fecha_Hora], 
      [EndDate] = [FechaVence], 
     [Status]=[Estado], 
     [DeptID]=[Tipo], 
     [JobID]=[Id_Centro_Costos], 
      [TimeStamp] = GETDATE() 
    FROM [AXData].[dbo].[TEmployee] 
      INNER JOIN [ControlSuite].[dbo].[Personas] ON [ControlSuite].[dbo].[Personas].[Id_Persona] = [AXData].[dbo].[TEmployee].[EmployeeID] 
    WHERE [AXData].[dbo].[TEmployee].[EmployeeID] IN (SELECT i.[Id_Persona] FROM inserted AS i INNER JOIN deleted AS d ON i.[Id_Persona] = d.[Id_Persona]) ; 
END; 
0

在SQL Server觸發器上下文中的僞表稱爲

  • Deleted:包含在UPDATE觸發

    行已被刪除(在DELETE觸發)行,或舊值
  • Inserted:包含已插入的行(在INSERT觸發器中)或新值行中的UPDATE觸發

沒有updated僞表

相關問題