2015-03-10 10 views

Trả lời

6

Sử dụng mệnh đề OUTPUT để thực hiện việc này.

Update table_name 
set col1='some_value' 
output inserted.* 
+1

Thats tốt hơn nhiều :) – Juan

1

Vâng, nếu bạn chạy trong cùng một giao dịch cả hai câu lệnh họ không nên bế tắc giữa chúng

Nếu bạn sợ deadlocking với các giao dịch khác, bạn nên hạn chế tối đa các khóa do giao dịch của bạn, sử dụng một mệnh đề WHERE được lập chỉ mục trong UPDATE và tránh mức cách ly SERIALIZABLE nếu có thể. (ReadCommitted làm thủ thuật cho bạn?)

1

Vâng, điều đó sẽ ổn thôi. Một bế tắc xảy ra khi hai phiên SQL riêng biệt cố truy cập cùng một bản ghi cùng một lúc. Bởi vì Update và Select đang xảy ra trong cùng một Transaction, nó sẽ buộc chúng xảy ra tuần tự. Tuy nhiên, nếu nhiều nguồn đang chạy Giao dịch của bạn, điều đó có thể gây ra bế tắc.

0

để chọn giá trị chèn sử dụng truy vấn sau

UPDATE SET maths = 20,biology = 21 OUTPUT INSERTED.maths, INSERTED.biology WHERE student_id = 12 

để chọn trước đó sử dụng giá trị

UPDATE SET maths = 20 OUTPUT DELETED.maths WHERE student_id = 12 
Các vấn đề liên quan