sql server merge 实现 trigger t_merge_gomac_avpickmap
2015-03-18 16:40
495 查看
IF OBJECT_ID('t_merge_gomac_avpickmap', N'TR') IS NOT NULL BEGIN PRINT 'Dropping Trigger t_merge_gomac_avpickmap' DROP TRIGGER t_merge_gomac_avpickmap IF @@ERROR = 0 PRINT 'Trigger t_merge_gomac_avpickmap dropped' END GO CREATE TRIGGER [dbo].[t_merge_gomac_avpickmap] ON dbo.avpickmap AFTER INSERT, UPDATE,DELETE AS BEGIN SET NOCOUNT ON; --organize source data ; WITH s AS ( SELECT [AVELINE],[AVSUFFIXID],[ITEMID],[AVZONE],[AVSTATION], [AVBIN],[AVPACKER],[AVCARTONTYPEID],[AVPIECESPERPACK], [AVSEQUENCE],[AVFLOORID],[AVPRODUCTGROUP],[AVBLINE], [AVOFFLINE],[MODIFIEDDATETIME],[DEL_MODIFIEDTIME], [MODIFIEDBY],[MODIFIEDTRANSACTIONID],[CREATEDDATETIME], [DEL_CREATEDTIME],[CREATEDTRANSACTIONID],[DATAAREAID], [RECVERSION],[PARTITION],[RECID],CAST([modifieddatetime] AS DATE) [modifieddate],DATEDIFF(second,CAST([modifieddatetime] AS DATE), [modifieddatetime] ) AS [modifiedtime], CAST([createddatetime] AS DATE) [createddate], DATEDIFF(second, CAST([createddatetime] AS DATE), [createddatetime]) AS [createdtime] FROM dbo.avpickmap ) --begin merge gomac.avpickmap MERGE INTO gomac.avpickmap d USING s ON d.RECID = S.RECID WHEN matched AND ( S.[modifiedtime]<>D.[modifiedtime] OR S.[modifieddate]<>D.[modifieddate]) THEN UPDATE SET D.[AVELINE] =S.[AVELINE], D.[AVSUFFIXID] =S.[AVSUFFIXID], D.[ITEMID] =S.[ITEMID], D.[AVZONE] =S.[AVZONE], D.[AVSTATION] =S.[AVSTATION], D.[AVBIN] =S.[AVBIN], D.[AVPACKER] =S.[AVPACKER], D.[AVCARTONTYPEID] =S.[AVCARTONTYPEID], D.[AVPIECESPERPACK] =S.[AVPIECESPERPACK], D.[AVSEQUENCE] =S.[AVSEQUENCE], D.[AVFLOORID] =S.[AVFLOORID], D.[AVPRODUCTGROUP] =S.[AVPRODUCTGROUP], D.[AVBLINE] =S.[AVBLINE], D.[AVOFFLINE] =S.[AVOFFLINE], D.[MODIFIEDDATETIME] =S.[MODIFIEDDATETIME], D.[DEL_MODIFIEDTIME] =S.[DEL_MODIFIEDTIME], D.[MODIFIEDBY] =S.[MODIFIEDBY], D.[MODIFIEDTRANSACTIONID] =S.[MODIFIEDTRANSACTIONID], D.[CREATEDDATETIME] =S.[CREATEDDATETIME], D.[DEL_CREATEDTIME] =S.[DEL_CREATEDTIME], D.[CREATEDTRANSACTIONID] =S.[CREATEDTRANSACTIONID], D.[RECVERSION] =S.[RECVERSION], D.[modifieddate] =S.[modifieddate], D.[modifiedtime] =S.[modifiedtime] WHEN NOT matched THEN INSERT ( [AVELINE],[AVSUFFIXID],[ITEMID],[AVZONE],[AVSTATION],[AVBIN], [AVPACKER],[AVCARTONTYPEID],[AVPIECESPERPACK],[AVSEQUENCE], [AVFLOORID],[AVPRODUCTGROUP],[AVBLINE],[AVOFFLINE],[MODIFIEDDATETIME], [DEL_MODIFIEDTIME],[MODIFIEDBY],[MODIFIEDTRANSACTIONID], [CREATEDDATETIME],[DEL_CREATEDTIME],[CREATEDTRANSACTIONID], [DATAAREAID],[RECVERSION],[PARTITION],[RECID],[modifieddate], [modifiedtime],[createddate],[createdtime]) VALUES ( S.[AVELINE],S.[AVSUFFIXID],S.[ITEMID],S.[AVZONE],S.[AVSTATION],S.[AVBIN],S.[AVPACKER], S.[AVCARTONTYPEID],S.[AVPIECESPERPACK],S.[AVSEQUENCE],S.[AVFLOORID],S.[AVPRODUCTGROUP], S.[AVBLINE],S.[AVOFFLINE],S.[MODIFIEDDATETIME],S.[DEL_MODIFIEDTIME],S.[MODIFIEDBY], S.[MODIFIEDTRANSACTIONID],S.[CREATEDDATETIME],S.[DEL_CREATEDTIME],S.[CREATEDTRANSACTIONID], S.[DATAAREAID],S.[RECVERSION],S.[PARTITION],S.[RECID],S.[modifieddate],S.[modifiedtime], S.[createddate],S.[createdtime]) WHEN NOT MATCHED BY SOURCE THEN DELETE ;--end merge END GO
相关文章推荐
- 速记 - 实现sql server clr trigger
- Php+SqlServer实现分页显示
- sqlserver中实现递归查询
- 使用T-SQL实现数据导出/导入(SQLSERVER—>SQLSERVER)
- Using MERGE in SQL Server to insert, update and delete at the same time
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter
- 实现SQL_SERVER的双机实时备份
- Create DDL table in SQL Server 2005 to audit DDL trigger activity
- Sql server database trigger operating summary 01
- 使用T-SQL实现数据导出/导入(SQLSERVER—>SQLSERVER)
- Sql Server Trigger 的使用(Insert ,Update,Delete...)
- SQL Server Trigger的嵌套和递归
- 利用配置文件实现SQL-Server与Oralce数据库访问类的转换
- 使用SQL SERVER / SSB 实现Pub/Sub集成模式
- linux下使用Freetds 连接MS SqlServer 2000 (C语言实现)
- sql server 2000与sql server ce2.0通过SqlCeRemoteDataAccess实现数据同步
- 利用配置文件实现SQL-Server与Oralce数据库访问类的转换
- MS SQLServer Trigger
- SQLSERVER Image类型 Hibernate 映射问题 简单实现