Pengendalian Baris Atom dan Boleh Dipercayai dengan T-SQL
Untuk mengekalkan integriti sistem tempahan, adalah penting untuk memastikan kemas kini dan sisipan adalah atom dan boleh dipercayai. Transaksi atom menjamin bahawa jika berbilang pengguna cuba mengemas kini baris yang sama secara serentak, hanya satu kemas kini akan berjaya, menghalang keadaan perlumbaan.
Andaikan anda mempunyai jadual bernama "Tempahan" dengan indeks unik pada "Id Penerbangan" lajur. Matlamat anda adalah untuk membuat prosedur tersimpan yang mengemas kini lajur "TicketsBooked" untuk ID penerbangan tertentu. Jika baris yang sepadan dengan ID penerbangan itu tidak wujud, anda perlu memasukkannya.
Begini cara anda boleh mencapai operasi atom dan boleh dipercayai ini menggunakan T-SQL:
-- BEGIN TRANSACTION BEGIN TRANSACTION; -- Check if the row exists IF EXISTS (SELECT * FROM Bookings WHERE FlightID = @Id) BEGIN -- Update the existing row UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightID = @Id AND TicketsMax < (TicketsBooked + @TicketsToBook); END ELSE BEGIN -- Insert a new row INSERT INTO Bookings (FlightID, TicketsBooked) VALUES (@Id, @TicketsToBook); END; -- COMMIT TRANSACTION COMMIT TRANSACTION; -- Return success (TRUE) SELECT CASE WHEN @@ERROR = 0 THEN 1 ELSE 0 END AS Success;
Ini prosedur tersimpan menggunakan penyata BEGIN TRANSACTION dan COMMIT TRANSACTION untuk menentukan sempadan transaksi. Dalam urus niaga, ia mula-mula menyemak sama ada baris dengan ID penerbangan yang ditentukan wujud menggunakan pernyataan IF EXISTS. Jika tidak, penyata INSERT memasukkan baris baharu.
Jika baris itu wujud, kenyataan UPDATE mengemas kini lajur "TicketsBooked" hanya jika nilai yang dikemas kini tidak melebihi had "TicketsMax". Dengan menggunakan urus niaga, kami memastikan sama ada kemas kini atau sisipan berjaya dilakukan, atau jika sebarang ralat berlaku, urus niaga akan ditarik balik.
Akhir sekali, penyata CASE menyemak pembolehubah global @@ERROR untuk menentukan kejayaan atau kegagalan transaksi dan mengembalikan nilai Boolean (BENAR atau SALAH) dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Menjamin Pengendalian Baris Atom dan Boleh Dipercayai dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!