Bolehkah MySQL Trigger Menghalang Operasi INSERT daripada Gagal?

Mary-Kate Olsen
Lepaskan: 2024-11-14 09:56:02
asal
476 orang telah melayarinya

Can MySQL Triggers Prevent INSERT Operations from Failing?

Menyebabkan INSERT Gagal dengan Pencetus

Walaupun pencetus dalam MySQL boleh mengubah suai data sebelum sisipan atau kemas kini, pada mulanya dipercayai ia boleh tidak menghalang operasi daripada gagal. Walau bagaimanapun, penerokaan lanjut telah mendedahkan bahawa terdapat kaedah untuk mencapai fungsi ini.

Penyelesaian MySQL

Dalam MySQL versi 5.0 dan 5.1, penyelesaian boleh digunakan untuk membatalkan mencetus dan memberikan mesej ralat. Ini melibatkan percubaan untuk mengakses lajur yang tidak wujud:

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW
BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;
Salin selepas log masuk

Jika syarat dipenuhi, pencetus cuba untuk memilih mesej ralat daripada jadual yang tidak wujud, menyebabkan sisipan gagal dengan mesej yang diberikan .

RDBMS lain

Keupayaan untuk membuang pengecualian dalam pencetus dan batalkan operasi tidak disokong secara universal merentas semua RDBMS. Walau bagaimanapun, sesetengah pangkalan data menyediakan mekanisme alternatif untuk mengendalikan ralat pengesahan dalam pencetus. Contohnya:

  • PostgreSQL: Perintah RAISE EXCEPTION boleh digunakan untuk menimbulkan pengecualian dan memberikan mesej ralat.
  • Oracle: Pernyataan SIGNAL membenarkan peningkatan amaran atau ralat dalam a pencetus.

Atas ialah kandungan terperinci Bolehkah MySQL Trigger Menghalang Operasi INSERT daripada Gagal?. 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