TRY:CREATE TRIGGER [表E_SamePeriod] ON [dbo].[表E] 
FOR INSERT, UPDATE, DELETE 
AS
BEGIN
SET XACT_ABORT ON
    
    DECLARE @SQL VARCHAR(8000)
    
    SELECT @SQL=ISNULL(@SQL)+' 
                DELETE FROM ['+NAME+'.数据库D.dbo.表E]
                INSERT INTO ['+NAME+'.数据库D.dbo.表E] SELECT * FROM [表E]
                '
    FROM TABLE1
    
    EXEC(@SQL)
END
GO

解决方案 »

  1.   

    isnull()函数处理没写全,修改一下:CREATE TRIGGER [表E_SamePeriod] ON [dbo].[表E] 
    FOR INSERT, UPDATE, DELETE 
    AS
    BEGIN
    SET XACT_ABORT ON
        
        DECLARE @SQL VARCHAR(8000)
        
        SELECT @SQL=ISNULL(@SQL,'')+' 
                    DELETE FROM ['+NAME+'.数据库D.dbo.表E]
                    INSERT INTO ['+NAME+'.数据库D.dbo.表E] SELECT * FROM [表E]
                    '
        FROM TABLE1
        
        EXEC(@SQL)
    END
    GO
      

  2.   

    你這個思路不好吧,你每次都把原來的表先刪除,然後再全部插入,要是數據量大了,你這樣做是不是效率很低,而且容易產生死鎖.
    你還是寫三個觸發器,每次只針對你變化的數據進行同步.在A庫中做插入時,同時對B庫,C庫進行插入,插入數據來源INSERTED.同樣在更新刪除時用同樣的方法處理.