Jadual pengguna
CREATE TABLE `USERS` ( `ID` char(255) COLLATE utf8_unicode_ci NOT NULL, `NAME` char(255) COLLATE utf8_unicode_ci NOT NULL, `EMAIL` char(255) COLLATE utf8_unicode_ci DEFAULT NULL, `CREATED_IN` datetime NOT NULL, `SIGNED_IN` datetime NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Pencetus
CREATE TRIGGER `ABC` BEFORE INSERT ON `USERS` FOR EACH ROW IF NEW.ID = "" OR NEW.NAME = "" OR NEW.CREATED_IN = "" OR NEW.CREATED_IN = "0000-00-00 00:00:00" OR NEW.SIGNED_IN = "" OR NEW.SIGNED_IN = "0000-00-00 00:00:00" THEN SIGNAL SQLSTATE "45000"; END IF
ruangan ID
("", " ", " ", " ", 等等...) -> 应该返回错误
("bf9 d 34 c9 08" = "bf9d34c908")
Lajur nama
("", " ", " ", " ", 等等...) -> 应该返回错误
Bar E-mel
("", " ", " ", " ", 等等...) -> 应该返回错误
("nkr owks lpehqp jmgdb @ gm ail.com" = "[电子邮件受保护]")
CREATED_IN dan SIGNED_IN
Versi MySQL ialah 5.7
Apakah cara terbaik untuk mengendalikan keperluan ini pada borang PENGGUNA?
Pencetus boleh kelihatan seperti ini:
NOTA - Pencetus ini membenarkan sebarang nilai menjadi NULL (tetapi hanya e-mel boleh menjadi NULL, semua lajur lain ditakrifkan sebagai BUKAN NULL).
Anda boleh menyusun semula blok dan meletakkan keadaan dengan kebarangkalian yang paling tinggi dahulu. Pencetus tidak akan melaksanakan kod berikut selepas melaksanakan SIGNAL.