Advertisement
Guest User

Untitled

a guest
May 29th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.45 KB | None | 0 0
  1. CREATE FUNCTION comprovar_fechas_salarios (from_date DATE, to_date DATE, empleado INT(11)) RETURNS TINYINT(1) DETERMINISTIC
  2.   BEGIN
  3.   DECLARE respuesta TINYINT(1) DEFAULT 1;
  4.     DECLARE done INT(1) DEFAULT 0;
  5.     DECLARE old_from_d DATE;
  6.     DECLARE old_to_d DATE;
  7.     DECLARE emp_n INT(11);
  8.     DECLARE salary INT(11);
  9.     DECLARE salarios_emp CURSOR FOR SELECT * from salaries where emp_no = empleado;
  10. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  11.  
  12.  
  13.     OPEN salarios_emp;
  14.     l1:LOOP
  15.     FETCH salarios_emp INTO emp_n, salary, old_from_d, old_to_d;
  16.     IF done = 1 OR respuesta = 0 THEN
  17.         CLOSE salarios_emp;
  18.       LEAVE l1;
  19.     END IF;
  20.         IF from_date BETWEEN old_from_d AND old_to_d THEN
  21.                     SET respuesta = 0;
  22.                 END IF;
  23.  
  24.                 IF to_date BETWEEN old_from_d AND old_to_d THEN
  25.                     SET respuesta = 0;
  26.                 END IF;
  27.  
  28.                 IF from_date < old_from_d AND to_date > old_to_d THEN
  29.                     SET respuesta=0;
  30.                 END IF;
  31.     END LOOP l1;
  32.  
  33.         RETURN respuesta;
  34.        
  35.   END;
  36.  
  37. CREATE TRIGGER salario_ins BEFORE INSERT ON salaries FOR EACH ROW
  38.   BEGIN
  39.         IF comprovar_fechas_salarios (new.from_date, new.to_date, new.emp_no) = 0 THEN
  40.             SIGNAL SQLSTATE '45000' SET message_text = "FECHAS SOLAPADAS";
  41.         END IF;
  42.   END;
  43.  
  44.  
  45. CREATE TRIGGER salario_upd BEFORE UPDATE ON salaries FOR EACH ROW
  46.   BEGIN
  47.         IF comprovar_fechas_salarios (new.from_date, new.to_date, new.emp_no) = 0 THEN
  48.             SIGNAL SQLSTATE '45000' SET message_text = "FECHAS SOLAPADAS";
  49.         END IF;
  50.   END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement