Существует таблица "сеанс", для этого вам нужно написать триггер для проверки даты и времени перед вставкой данных, если дата и время больше или равны текущей дате и времени, значение может быть вставлено в таблицу, в противном случае отображается сообщение об ошибке.
CREATE TABLE 'seance' (
'idSeance' int(11) NOT NULL,
'Date/time' datetime NOT NULL,
'Hall_idHall' int(45) DEFAULT NULL,
'Hall_Theatre_idTheatre' int(45) DEFAULT NULL,
'Performance_idPerformance' int(45) NOT NULL,
'price' int(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TRIGGER 'insert_seance' BEFORE INSERT ON 'seance'
FOR EACH ROW BEGIN
IF (NEW.'Date/time' >= CURRENT_TIMESTAMP)
THEN
INSERT INTO seance
('idSeance', 'Date/time', 'Hall_idHall',
'Hall_Theatre_idTheatre','Performance_idPerformance', 'price')
VALUES (NEW.'idSeance',NEW.'Date/time',NEW.'Hall_idHall',
NEW.'Hall_Theatre_idTheatre',NEW.'Performance_idPerformance',NEW.'price');
ELSE
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error for updating values';
END IF;
END
Я не понимаю, почему это дает ошибку?
Это одно из немногих сообщений об ошибках mysql, которые кристально чисты (IMHO). Однако - вам не нужен этот оператор INSERT. Просто введите ошибку, если данные недействительны. Если данные действительны, вам не нужно ничего делать в триггере. Строка будет только что вставлена.
CREATE TRIGGER 'insert_seance' BEFORE INSERT ON 'seance' FOR EACH ROW
BEGIN
IF (NEW.'Date/time' < CURRENT_TIMESTAMP)
THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error for updating values';
END IF;
END