Как исправить ошибки при добавлении функции проверки: 3815 или 3814. Выражение ограничения проверки содержит запрещенную функцию - PullRequest
1 голос
/ 24 октября 2019

У меня проблема с 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.

Я также пытался создать базовые функции, но результат все тот же, когда я использую его для проверки ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...