Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Ralat 334 Apabila Menggunakan KEMASKINI dengan OUTPUT dan Pencetus dalam SQL Server?
Menyelesaikan masalah Ralat Pelayan SQL 334: KEMASKINI, OUTPUT dan Pencetus
Apabila bekerja dengan SQL Server, melaksanakan pernyataan UPDATE
yang menggabungkan klausa OUTPUT
bersama pencetus yang didayakan pada jadual sasaran boleh menjana ralat 334. Konflik ini timbul kerana pencetus boleh mengubah data jadual pasca-UPDATE
, mewujudkan percanggahan antara OUTPUT
data yang dikembalikan klausa dan keadaan sebenar jadual.
Penyelesaian mudah melibatkan penghapusan klausa OUTPUT
daripada pernyataan UPDATE
anda. Sebaliknya, dapatkan semula data yang diperlukan menggunakan pernyataan SELECT
yang berasingan selepas UPDATE
selesai. Pertimbangkan contoh ini:
<code class="language-sql">SELECT BatchFileXml, ResponseFileXml, ProcessedDate FROM BatchReports WHERE BatchReports.BatchReportGUID = @someGuid; UPDATE BatchReports SET IsProcessed = 1 WHERE BatchReports.BatchReportGUID = @someGuid;</code>
Pendekatan yang disemak ini mula-mula mendapatkan semula data melalui SELECT
, menjamin perolehan data yang tepat walaupun dengan pengubahsuaian pencetus serentak. Pernyataan UPDATE
kemudiannya diteruskan tanpa klausa OUTPUT
, menyelesaikan ralat.
Adalah penting untuk memahami bahawa menggabungkan OUTPUT
klausa dengan pencetus boleh menimbulkan masalah. Data daripada klausa OUTPUT
mungkin tidak menggambarkan keadaan akhir jadual disebabkan oleh tindakan pencetus berikutnya. Oleh itu, amalan terbaik untuk mengelak daripada menggunakan klausa OUTPUT
apabila pencetus aktif pada jadual sasaran.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat 334 Apabila Menggunakan KEMASKINI dengan OUTPUT dan Pencetus dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!