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
Lepaskan: 2025-01-16 18:41:10
asal
239 orang telah melayarinya

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

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

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

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!

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