У меня есть две таблицы, как показано ниже.Oracle SQL добавить ограничение проверки на нескольких уровнях таблицы
создать таблицу emp (empno varchar2 (5), position varchar2 (5));
создать таблицу информации (empno varchar2 (5), nick varchar2 (20));
empno является основным ключом для обеих таблиц и empno также является внешним ключом для информации.
Теперь я хочу добавить контрольное ограничение, так что кроме gm или ловушки (значение в позиции столбца), ник не должен превышать 16 букв.
Я пробовал метод UDF, как показано ниже.
create function checkPos (@empno varchar2(5))
returns bit
as
begin
declare @par bit
select @par = CASE WHEN pos = 'gm' or pos = 'catcher'
THEN 0 ELSE 1 END
FROM emp
WHERE empno = @empno
RETURN(@par)
END
ALTER TABLE info ADD CONSTRAINT info_nick_ck CHECK (checkPos(empno) * length(nick) <16);
Однако, он не работает в oracle live sql.
Пожалуйста, помогите. Заранее спасибо.
Вы сказали, что вы используете Oracle, но ваш код выглядит как TSQL код мне – GurV