Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

T-SQL MERGE - mencari tahu tindakan yang diambil

Anda dapat OUTPUT menjadi variabel tabel dan kemudian mengambil dari itu. Coba ini:

DECLARE @t table (C1 int, C2 int)
DECLARE @C1 INT, @C2 INT
DECLARE @Output TABLE (DeletedC1 INT, DeletedC2 INT, ActionType VARCHAR(20), InsertedC1 INT, InsertedC2 INT)

set @c1 = 1
set @c2 = 1

MERGE       @t as tgt
USING       (SELECT @C1, @C2) AS src (C1, C2)
ON          (tgt.C1 = src.C1)
    WHEN MATCHED AND tgt.C2 != src.C2 THEN
        UPDATE SET tgt.C2 = src.C2
    WHEN NOT MATCHED BY TARGET THEN
        INSERT VALUES (src.C1, src. C2)
    OUTPUT deleted.*, $action, inserted.* INTO @Output;

SELECT * FROM @Output WHERE ActionType = 'INSERT'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus karakter ASCII yang diperluas dari string di T-SQL?

  2. Pilih nilai dari bidang XML di SQL Server 2008

  3. Bagaimana cara membuat parameter string nol dengan DBNull.Value dengan jelas dan cepat?

  4. Bagaimana cara mengotomatiskan pembuatan skrip menggunakan SMO di SQL Server?

  5. Balik Hasil SQL