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
Lepaskan: 2025-01-16 18:27:11
asal
151 orang telah melayarinya

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

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

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!

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