2016-08-23 3 views
0

Я хочу создать триггер, который позволит вставить кадр в рабочий час (с понедельника по пятницу с 9:00 до 17:00). Я в настоящее время этотSQL Trigger не работает (по расписанию)

CREATE DEFINER=`root`@`localhost` TRIGGER `noWorkHour` 
BEFORE INSERT ON `empleado` FOR EACH ROW 
BEGIN 

    IF DAYOFWEEK(NOW()) BETWEEN (2, 6) 
    AND CURTIME() BETWEEN '09:00:00' AND '17:00:00' 
    THEN 
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Solo se pueden ingresar en horario de trabajo'; 
    END IF; 
END 

Но когда я пытаюсь вставить что-то, он показывает:

/* Error de SQL (1241): Operand should contain 1 column(s) */ 
/* Affected rows: 0 Filas encontradas: 0 Advertencias: 0 Duración para 0 of 1 query: 0,000 sec. */ 

Я использую MariaDB для этого.

+0

Почему вы используете другой синтаксис для двух 'BETWEEN' предикатов? – mustaccio

+0

Lol, спасибо! Вот и все. Бывают моменты, когда вы слишком сонные, что все испортите –

ответ

0

После комментария @mustaccio, я сам возился с другим, а не с триггером.

Trigger идет следующим образом:

CREATE DEFINER=`root`@`localhost` TRIGGER `noWorkHour` BEFORE INSERT ON `empleado` FOR EACH ROW BEGIN 


IF DAYOFWEEK(NOW()) NOT BETWEEN 2 AND 6 AND CURTIME() NOT BETWEEN '09:00:00' AND '16:00:00' THEN 
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Solo se pueden ingresar en horario de trabajo'; 

END IF; 
END 
Смежные вопросы