Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjamin Pengendalian Baris Atom dan Boleh Dipercayai dalam T-SQL?

Bagaimana untuk Menjamin Pengendalian Baris Atom dan Boleh Dipercayai dalam T-SQL?

Patricia Arquette
Lepaskan: 2025-01-07 13:11:41
asal
426 orang telah melayarinya

How to Guarantee Atomic and Reliable Row Handling in T-SQL?

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan