user table
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
trigger
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
ID column
("", " ", " ", " ", etc...) -> should return an error
("bf9 d 34 c9 08" = "bf9d34c908")
Name column
("", " ", " ", " ", etc...) -> should return an error
Email Column
("", " ", " ", " ", etc...) -> should return an error
("nkr owks lpehqp jmgdb @ gm ail.com" = "[email protected]")
CREATED_IN and SIGNED_IN columns
MySQL version is 5.7
What is the best way to handle these requirements on the USERS table?
A trigger can look like this:
NOTE - This trigger allows any value to be NULL (but only email can be NULL, all other columns are defined as NOT NULL).
You can rearrange the blocks and put the condition with the highest probability first. The trigger will not execute the following code after executing SIGNAL.