none
sql server 2005 导入数据不能触发触发器 RRS feed

  • 问题

  • Bas_Bulletin表有一个触发器 [Bas_Bulletin_insert_trigger] 如下
    当Bas_Bulletin表插入一条数据触发器就往Bas_Bulletin_tracking表插入一条数据
    我手工加一条数据可以触发触发器 但我右键导入数据就不能触发了 不知道为什么

    触发器
    USE [KPMIS]
    GO
    /****** 对象: Trigger [dbo].[Bas_Bulletin_insert_trigger] 脚本日期: 11/15/2010 14:00:17 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER TRIGGER [dbo].[Bas_Bulletin_insert_trigger] ON [dbo].[Bas_Bulletin] FOR INSERT AS
    UPDATE [side] SET [sync_row_is_tombstone] = 0, [local_update_peer_key] = 0, [restore_timestamp] = NULL, [update_scope_local_id] = NULL, [last_change_datetime] = GETDATE() FROM [Bas_Bulletin_tracking] [side] JOIN INSERTED AS [i] ON [side].[Bul_ID] = [i].[Bul_ID]
    INSERT INTO [Bas_Bulletin_tracking] ([i].[Bul_ID], [create_scope_local_id], [local_create_peer_key], [local_create_peer_timestamp], [update_scope_local_id], [local_update_peer_key], [sync_row_is_tombstone], [last_change_datetime], [restore_timestamp]) SELECT [i].[Bul_ID], NULL, 0, @@DBTS+1, NULL, 0, 0, GETDATE() , NULL FROM INSERTED AS [i] LEFT JOIN [Bas_Bulletin_tracking] [side] ON [side].[Bul_ID] = [i].[Bul_ID] WHERE [side].[Bul_ID] IS NULL
    

    2010年11月15日 6:06

答案

  • 批量导入数据默认不触发的,你执行导入向导时,不要直接执行,保存为SSIS包,然后编辑导入的数据流,写入表那个“转换”里面有个属性可以控制是否触发的。
    想不想时已是想,不如不想都不想。
    2010年11月15日 9:07
    版主