patternsqlMinor
Comparing dates in a BEFORE INSERT trigger
Viewed 0 times
triggerinsertcomparingdatesbefore
Problem
I need help making a
Something like:
My table
How do I accomplish this?
TRIGGER that compares two dates being entered into a table, but I'm not 100% on the syntax I should use.Something like:
CREATE TRIGGER chk_dates
BEFORE INSERT ON `job_history`
FOR EACH ROW
BEGIN
IF( NEW.end_date < OLD.start_date ) .../// error, don't insert data
ELSE .../// allow the data to be enteredMy table
job_history will have a start_date, and when end_date is entered, I want it to check to ensure that it isn't prior to start_date. How do I accomplish this?
Solution
With MySQL 5.5 or 5.6, you can use SIGNAL instead of the hacks to bail from a trigger.
Also, on a
No "else" is needed because taking no action in a
Also, on a
BEFORE INSERT trigger, only the NEW alias is used. Not OLD.CREATE TRIGGER chk_dates
BEFORE INSERT ON `job_history`
FOR EACH ROW
BEGIN
IF (NEW.end_date < NEW.start_date) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'end_date cannot be earlier than start_date';
END IF;
END;No "else" is needed because taking no action in a
BEFORE trigger allows the original action to proceed.Code Snippets
CREATE TRIGGER chk_dates
BEFORE INSERT ON `job_history`
FOR EACH ROW
BEGIN
IF (NEW.end_date < NEW.start_date) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'end_date cannot be earlier than start_date';
END IF;
END;Context
StackExchange Database Administrators Q#30137, answer score: 4
Revisions (0)
No revisions yet.