У меня проблема с MYSQL. У меня есть одна таблица «скрининг», которая состоит из scrreningID (PK), movieID (FK) и roomID (FK). Я хочу сделать проверку, что если фильм is3d и комната canplay3d, функция вставки может быть выполнена. В противном случае, если фильм не 3-й, а комната может играть 3-й, вставка невозможна.
Я пытаюсь изменить свою таблицу и добавить ограничение проверки. Я создал функцию для ограничения проверки. Тем не менее, он всегда получает ошибку
Вот моя функция Код:
CREATE DEFINER=`root`@`localhost` FUNCTION `is3d`(mov int, roo int) RETURNS int(11)
READS SQL DATA
DETERMINISTIC
BEGIN
declare movie_3d integer;
declare room_3d integer;
select is3d into movie_3d from movie where movieID = mov;
select canplay3d into room_3d from room_auditorium where roomID = roo;
if (movie_3d = 1 && room_3d =1) then
RETURN 1;
else
return 0;
end if;
END
Функция успешна и работает хорошо. Но когда я добавляю его в ограничение Check
alterter table screening_show add constraint
checkisthreedy check (is3d(movieID, roomID) = 1)
, всегда отображается ошибка:
Код ошибки: 3814. Выражение xonstrainname проверочного ограничения содержит запрещенную функцию: CustomerLevel
.
Я также пытался создать базовые функции, но результат все тот же, когда я использую его для проверки ограничения.