Sql 如何知道合并操作是插入还是更新?

Sql 如何知道合并操作是插入还是更新?,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,就说我有, MERGE INTO SHARE_AD_GROUP A USING ( SELECT SHARE_AD_GROUP_ID, SHARE_ID, AD_GROUP, SHARE_PERMISSIONS FROM SHARE_AD_GROUP WHERE SHARE_ID = @shareID AND AD_GROUP = @ownerId ) B ON (A.SHARE_AD_GROUP_ID = B.SHARE_

就说我有,

MERGE INTO SHARE_AD_GROUP A
USING (
    SELECT SHARE_AD_GROUP_ID,
        SHARE_ID,
        AD_GROUP,
        SHARE_PERMISSIONS
    FROM SHARE_AD_GROUP
    WHERE SHARE_ID = @shareID AND AD_GROUP = @ownerId
) B ON (A.SHARE_AD_GROUP_ID = B.SHARE_AD_GROUP_ID)
WHEN MATCHED THEN
    UPDATE SET A.SHARE_PERMISSIONS = B.SHARE_PERMISSIONS
WHEN NOT MATCHED THEN
    INSERT (SHARE_PERMISSIONS) VALUES(@sharePermissions);

-- In Here how do I know that it is insert or update
如何知道合并操作是在插入或更新之后插入或更新的?

请参阅


试试这个SQL。您应该能够看到操作的更改日志
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));

MERGE tblTarget AS Target
USING (SELECT Col1,Col2 FROM tblSource) 
    AS Source
ON (Target.Col1 = Source.Col1)
WHEN MATCHED THEN 
    UPDATE SET target.Col2 = source.Col2 -- Need to get affected rows here
WHEN NOT MATCHED BY TARGET THEN
    INSERT (Col1,Col2) VALUES (Col1,Col2); -- Need to get affected rows here
OUTPUT $action INTO @SummaryOfChanges;

SELECT Change, COUNT(*) AS CountPerChange
FROM @SummaryOfChanges
GROUP BY Change;