Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL MERGE - sprawdzanie, jakie działanie wykonało

Możesz OUTPUT do zmiennej tabeli, a następnie pobrać z niej. Spróbuj tego:

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. Jaki jest zalecany rozmiar partii dla SqlBulkCopy?

  2. Kiedy używałbyś funkcji z wartościami przechowywanymi w tabeli?

  3. Co to jest zaufane połączenie?

  4. obliczyć zamykającą ilość zapasów, cenę i wartość według FIFO

  5. Znajdź ostatnio wstawiony rekord MS SQL SERVER