Penguatkuasaan Kekangan Utama Utama yang BOLEH DITANGGUH lwn. SEGERA
Penguatkuasaan kekangan kunci utama atau kunci utama yang ditangguhkan/ditunda dalam PostgreSQL bergantung padanya tetapan dan jenis operasi yang dijalankan.
Untuk kekangan yang ditakrifkan sebagai DITANGGUHKAN AWALNYA SEGERA, keunikan disemak selepas pelaksanaan setiap pernyataan SQL. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa untuk kekangan UNIQUE atau PRIMER KEY, manual menyatakan bahawa semakan keunikan berlaku serta-merta selepas setiap arahan, tanpa mengira tetapan kebolehtundaan.
Contoh yang disediakan dalam pertanyaan menunjukkan bahawa pernyataan KEMASKINI mengubah suai berbilang baris dibenarkan untuk berjaya walaupun kekangan ditakrifkan sebagai KUNCI UTAMA BOLEH DITANGGUH PADA AWALNYA. Ini kerana semakan berlaku selepas pelaksanaan pernyataan, dan dalam kes ini, kekangan masih dipenuhi.
Sebaliknya, data yang mengubah suai CTE yang cuba mengemas kini baris dalam berbilang jadual boleh gagal jika kekangan PK adalah tidak ditangguhkan. Ini kerana setiap sub-penyata dalam CTE dilaksanakan secara serentak, dan tanpa pengasingan syot kilat, susunan kemas kini tidak boleh diramalkan. Akibatnya, pelanggaran kunci unik boleh berlaku.
Jika berbilang penyata KEMASKINI dilaksanakan dalam satu transaksi tanpa menetapkan kekangan secara jelas sebagai tertunda, pelanggaran UNIK boleh berlaku jika kekangan tidak ditangguhkan. Ini kerana semakan dilakukan selepas setiap penyata dan kekangan mungkin dilanggar semasa keadaan perantaraan transaksi.
Oleh itu, adalah jelas bahawa kelakuan kekangan UNIQUE atau PRIMARY KEY yang tidak boleh ditangguhkan dalam PostgreSQL adalah pada dasarnya cacat. Semakan dilakukan selepas setiap baris dikemas kini, yang boleh membawa kepada kegagalan yang tidak dijangka dalam senario tertentu. Walau bagaimanapun, penyelesaian untuk isu ini adalah dengan menggunakan kekangan yang BOLEH DITANGGUH, yang memberikan lebih fleksibiliti dalam menguatkuasakan keunikan dan boleh mengelakkan ralat yang tidak perlu.
Atas ialah kandungan terperinci Bagaimanakah Penguatkuasaan Kekangan Utama Utama PostgreSQL Tertunda vs. Segera Mempengaruhi Gelagat Transaksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!