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

Bagaimana Menggunakan Pencetus MySQL untuk Menghalang Sisipan Tarikh Lahir Masa Depan?

Barbara Streisand
Barbara Streisandasal
2025-01-16 18:41:10294semak imbas

How to Use a MySQL Trigger to Prevent Future Birthdate Inserts?

Gunakan pencetus MySQL untuk menghalang tarikh lahir akan datang daripada dimasukkan

MySQL membenarkan penggunaan pencetus untuk menghalang operasi sisipan berdasarkan syarat tertentu. Satu kes sedemikian adalah untuk mengelakkan sisipan dengan tarikh lahir pada masa hadapan.

Untuk melakukan ini, anda boleh mencipta BEFORE INSERT pencetus yang menyemak nilai lajur birthdate:

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    -- 如何阻止插入?
  END IF;
END;</code>

Untuk membatalkan operasi sisipan dalam pernyataan IF, anda boleh menggunakan pernyataan SIGNAL MySQL:

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = '由于出生日期为未来日期,因此不允许插入';
  END IF;
END;</code>

Sebagai alternatif, anda boleh mengubah suai data untuk melanggar kekangan, contohnya, menetapkan nilai lajur birthdate kepada NULL:

apabila tarikh lahir adalah pada masa hadapan
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>

Memandangkan lajur birthdate ditakrifkan sebagai NOT NULL, operasi sisipan akan ditolak secara automatik.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pencetus MySQL untuk Menghalang Sisipan Tarikh Lahir Masa Depan?. 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