35 lines
774 B
MySQL
35 lines
774 B
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_beforeUpdate`
|
||
|
BEFORE UPDATE ON `business`
|
||
|
FOR EACH ROW
|
||
|
BEGIN
|
||
|
DECLARE isOverlapping BOOL;
|
||
|
|
||
|
SET NEW.editorFk = account.myUser_getId();
|
||
|
|
||
|
IF NEW.ended IS NULL THEN
|
||
|
SET NEW.payedHolidays = 0;
|
||
|
END IF;
|
||
|
|
||
|
IF !(OLD.started <=> NEW.started AND OLD.ended <=> NEW.ended) THEN
|
||
|
|
||
|
SELECT COUNT(*) > 0 INTO isOverlapping
|
||
|
FROM business b
|
||
|
WHERE (util.hasDateOverlapped(
|
||
|
NEW.started,
|
||
|
IFNULL(NEW.ended, b.started),
|
||
|
b.started,
|
||
|
IFNULL(b.ended, NEW.started))
|
||
|
OR (NEW.ended <=> NULL AND b.ended <=> NULL))
|
||
|
AND b.id <> OLD.id
|
||
|
AND workerFk = OLD.workerFk;
|
||
|
|
||
|
IF isOverlapping THEN
|
||
|
CALL util.throw ('IS_OVERLAPPING');
|
||
|
END IF;
|
||
|
|
||
|
END IF;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|