Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

T-SQL MERGE - tìm ra hành động mà nó đã thực hiện

Bạn có thể OUTPUT vào một biến bảng và sau đó truy xuất từ ​​đó. Hãy thử điều này:

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. Tương đương với bigint trong C # là gì?

  2. Cách thay đổi thuộc tính của cột bằng tập lệnh sql

  3. Làm cách nào để nhận các giá trị tham số cho truy vấn SQL Server trong SQL Server Profiler

  4. Truy vấn SQL - Xóa các bản sao nếu nhiều hơn 3 lỗi?

  5. Tạo hồ sơ thư cơ sở dữ liệu trong SQL Server (T-SQL)