2016-09-30 92 views
1

我在這裏嘗試使用存儲過程
批量添加數據,但問題是我不想要更新數據,我想將數據插入到臨時表時,條件匹配如何在不同的表中插入使用合併查詢

Alter PROCEDURE [dbo].[Update_Customers] 
    @typeMembership aspnet_Membership_type READONLY 
    AS 
    BEGIN 
      SET NOCOUNT ON; 

      MERGE INTO aspnet_Membership c1 
      USING @typeMembership c2 
      ON c1.EmployeeCode=c2.EmployeeCode 
      WHEN MATCHED THEN 
      UPDATE SET 
      c1.[EmployeeCode] = c2.[EmployeeCode] , 
      c1.[EmployeeTypeId] = c2.[EmployeeTypeId] , 
      c1.[FirstName] = c2.[FirstName] , 
      c1.[LastName] = c2.[LastName] , 
      c1.[Gender] = c2.[Gender] , 
      c1.[Email] = c2.[Email] , 
      c1.[MobilePIN] = c2.[MobilePIN] , 
      c1.[Current_Address] = c2.[Current_Address] , 
      c1.[Permanent_Address] = c2.[Permanent_Address] , 
      c1.[IsApproved] = c2.[IsApproved] 
      WHEN NOT MATCHED THEN 
      INSERT VALUES (c2.EmployeeCode, c2.EmployeeTypeId,c2.FirstName,c2.LastName,c2.Gender,c2.Email,c2.MobilePIN,c2.Current_Address, c2.Permanent_Address,c2.IsApproved); 
    END 
+0

,什麼是他們,只是改變以'WHEN NOT THEN UPDATE' –

+0

相合我想在不同的表中添加不'WHEN然後再配UPDATE'條款問題在那 – Aamir

+1

然後'MERGE'不是一個解決方案。編寫你自己的程序沒有它。 –

回答

0

AFAIK你不能這樣做合併。你必須編寫不同的插入語句:

BEGIN TRY 
BEGIN TRANSACTION 

INSERT INTO thirdTable (<ColumnsList>) 
SELECT <ValuesList> 
FROM @typeMembership c2 
WHERE EXISTS 
(
    SELECT 1 
    FROM aspnet_Membership c1 
    WHERE c1.EmployeeCode = c2.EmployeeCode 
); 

INSERT INTO aspnet_Membership (<ColumnsList>) 
SELECT <ValuesList> 
FROM @typeMembership c2 
WHERE NOT EXISTS 
(
    SELECT 1 
    FROM aspnet_Membership c1 
    WHERE c1.EmployeeCode = c2.EmployeeCode 
); 

COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 
    IF @@Trancount > 0 
     ROLLBACK TRANSACTION 
END CATCH 
相關問題