Memastikan Kemas Kini Baris Atom dan Boleh Dipercayai dalam T-SQL
Dalam bidang pengurusan data, selalunya penting untuk memastikan kewujudan baris sebelum melakukan kemas kini. Ini amat penting dalam senario di mana integriti data dan atomicity adalah terpenting. Artikel ini meneroka pendekatan yang boleh dipercayai untuk menyemak sama ada baris wujud dalam jadual dan, jika tiada, masukkannya, semuanya dalam skop transaksi tunggal.
Kemas Kini Baris Atom dan Boleh Dipercayai
Pertimbangkan sistem tempahan yang penting untuk mengelakkan tempahan berlebihan dan menjamin kebolehpercayaan setiap tempahan. Melaksanakan fungsi ini memerlukan pendekatan atom dan boleh dipercayai, memastikan sama ada kedua-dua operasi (kemas kini atau sisipan) berjaya dilaksanakan atau kedua-duanya digulung semula, mengekalkan integriti data.
Memeriksa Kod
Coretan kod yang disediakan cuba mengemas kini baris dalam jadual Tempahan. Walau bagaimanapun, jika baris itu tidak wujud, ia tidak dapat mengendalikan senario dengan betul. Selain itu, penggunaan pertanyaan @@ROWCOUNT untuk menyemak baris sedia ada memperkenalkan isu ketidakkonsistenan data.
Pelaksanaan Kod yang Dipertingkat
Untuk membetulkan isu ini dan memastikan tingkah laku yang diingini, kod yang diubah suai dibentangkan di bawah:
-- Initiate transaction (assuming SQL Server) BEGIN TRANSACTION -- Attempt to update row UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightId = @Id AND TicketsMax >= (TicketsBooked + @TicketsToBook) -- Check if row updated IF @@ROWCOUNT = 0 BEGIN -- Insert new row (if row doesn't exist) INSERT INTO Bookings ... (omitted) END -- Transaction completion (commit or rollback based on result) IF @@ERROR = 0 BEGIN COMMIT TRANSACTION SELECT 1 AS Result -- Return true (if transaction committed) END ELSE BEGIN ROLLBACK TRANSACTION SELECT 0 AS Result -- Return false (if transaction failed) END
Penjelasan
Kod dipertingkat ini termasuk beberapa pengubahsuaian penting:
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Kemas Kini Baris Atom dan Boleh Dipercayai dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!