SQL Serverでマージ更新クエリを実行しようとしています。マージ更新クエリで問題が発生しないように
テーブル "MY_TABLE" クエリは、次のようなある4列の "フィールド"(文字)、 "日付"(日付)、 "ヴァル"(数値)、 "改訂版"(日時)
があります
MERGE "my_table" AS Target USING (VALUES ('field_example','2017-01-04','0','2017-01-03 12:02:02')) AS Source ("field","date","val","revision")
ON (Target."field" = Source."field" AND Target."date" = Source."date")
WHEN MATCHED
THEN UPDATE SET Target."val" = Source."val",Target."revision" = Source."revision"
WHEN NOT MATCHED BY TARGET
THEN INSERT ("field","date","val","revision")
VALUES (Source."field", Source."date", Source."val", Source."revision")
OUTPUT $action, Inserted.*, Deleted.*;
行がフィールド=「field_example」と日付=「2017年1月4日」と「MY_TABLE」に既に存在するので、私は改正」、2つの他の列「ヴァル」を更新するには、このクエリを期待しています"
私は次のクエリ出力を得る:私は、データベースに見たとき
$action field date revision val field.1 date.1 revision.1 val.1
1 UPDATE field_example 2017-01-04 2017-01-03 12:02:02 0 field_example 2017-01-04 2017-01-03 10:09:25 161250
だから、それは(それが必要のように更新しているために)良く見える
はしかし、行は=(更新されていませんvalはまだ0の代わりに161250ですが、改訂版はまだ2017-01-03 10:09:25です)
理由はありますか?私はデータベースに見えるしかし、行が更新されていない
テーブルのサンプルデータを追加できますか? –
ROLLBACKが存在しないか、revert文/トリガーがそこに存在することを望みます。 –