Tôi đang cố thực hiện truy vấn cập nhật hợp nhất trong máy chủ sql.vấn đề với truy vấn cập nhật hợp nhất không thực hiện vì nó nên
Bảng "my_table" có 4 cột "lĩnh vực" (nhân vật), "date" (date), "val" (số), "sửa đổi" (datetime)
Truy vấn là như vậy:
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.*;
Vì đã có hàng trong "my_table" với field = "field_example" và date = '2017-01-04', tôi mong truy vấn này cập nhật 2 cột khác "val", "sửa đổi ".
tôi nhận được đầu ra truy vấn sau đây:
$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
Vì vậy, nó có vẻ tốt (đã được cập nhật thường là có)
Tuy nhiên khi tôi nhìn vào cơ sở dữ liệu, hàng chưa được cập nhật (= val vẫn là 161250 thay vì 0 và bản chỉnh sửa vẫn là 2017-01-03 10:09:25)
Bất kỳ ý tưởng nào tại sao?
Bạn có thể thêm dữ liệu mẫu của bảng không. –
Hy vọng không có ROLLBACK hoặc lệnh return/revert tồn tại trên đó. –