Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pemicu MySQL Boleh Menghalang INSERT Berdasarkan Tarikh Lahir Masa Depan?

Bagaimanakah Pemicu MySQL Boleh Menghalang INSERT Berdasarkan Tarikh Lahir Masa Depan?

Susan Sarandon
Susan Sarandonasal
2025-01-16 18:27:11153semak imbas

How Can MySQL Triggers Prevent INSERTs Based on Future Birthdates?

Menggunakan Pencetus MySQL untuk Menyekat INSERT Berdasarkan Tarikh Masa Depan

Pencetus MySQL menawarkan mekanisme yang berkuasa untuk menguatkuasakan integriti data dengan melaksanakan kod secara automatik sebelum atau selepas operasi pangkalan data. Contoh ini menunjukkan cara pencetus BEFORE INSERT boleh menghalang sisipan baris dengan tarikh lahir akan datang.

Berikut ialah pencetus yang menyekat INSERT jika birthdate adalah pada masa hadapan:

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

Pencetus ini menandakan ralat SQLSTATE tersuai, memberikan mesej yang jelas menerangkan sebab sisipan gagal.

Pendekatan berbeza melibatkan mengubah suai data dalam pencetus untuk melanggar kekangan NOT NULL:

<code class="language-sql">CREATE TRIGGER set_birthdate_null
BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURDATE() THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>

Jika kekangan NOT NULL ditakrifkan pada lajur birthdate, menetapkannya kepada NULL akan menyebabkan INSERT gagal. Walau bagaimanapun, kaedah ini kurang jelas tentang sebab kegagalan. Ingat untuk menggantikan your_table dengan nama sebenar jadual anda.

Atas ialah kandungan terperinci Bagaimanakah Pemicu MySQL Boleh Menghalang INSERT Berdasarkan 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