Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencegah Sisipan Tarikh Lahir Masa Depan dalam MySQL Menggunakan Pencetus?

Bagaimana untuk Mencegah Sisipan Tarikh Lahir Masa Depan dalam MySQL Menggunakan Pencetus?

Linda Hamilton
Linda Hamiltonasal
2025-01-16 18:34:15591semak imbas

How to Prevent Future Birthdate Inserts in MySQL Using a Trigger?

Halang memasukkan hari lahir akan datang menggunakan pencetus MySQL

Soalan:

Buat pencetus MySQL yang melumpuhkan memasukkan lajur hari lahir dalam baris akan datang.

Jawapan:

Untuk mengelakkan pemasukan apabila lajur hari lahir melebihi tarikh semasa:

<code class="language-sql">CREATE TRIGGER check_birthdate
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE() THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future';
  END IF;
END;</code>

Arahan:

    Pernyataan
  • CREATE TRIGGER memulakan penciptaan pencetus baharu bernama check_birthdate.
  • Klausa
  • BEFORE INSERT menyatakan bahawa pencetus harus dilaksanakan sebelum operasi sisipan.
  • Klausa
  • ON table menentukan jadual yang pencetus akan digunakan.
  • FOR EACH ROW menunjukkan bahawa pencetus harus dilaksanakan untuk setiap baris.
  • Pernyataan
  • IF menyemak sama ada nilai medan NEW.birthdate (nilai lajur dalam baris yang disisipkan) lebih besar daripada CURRENT_DATE(). Jika ya, pencetus meneruskan ke langkah seterusnya.
  • Pernyataan
  • SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future' menimbulkan pengecualian SQL dengan status SQL '45000' (syarat pengecualian yang ditentukan pengguna yang menunjukkan pelanggaran kekangan). Ini akan membatalkan operasi sisipan semasa dan memberikan mesej ralat yang lebih jelas. Pernyataan yang dipertingkatkan termasuk SET MESSAGE_TEXT, menjadikan mesej ralat lebih mudah difahami dan nyahpepijat.

Jawapan yang disemak ini memberikan mesej ralat yang lebih bermaklumat, meningkatkan kebolehgunaan.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Sisipan Tarikh Lahir Masa Depan dalam MySQL Menggunakan Pencetus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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