我有兩個表,如下所示。Oracle SQL在多表級別添加檢查約束條件
create table emp(empno varchar2(5),position varchar2(5));
create table info(empno varchar2(5),nick varchar2(20));
empno是兩個表的主鍵,empno也是信息中的外鍵,帶有父表emp。
現在我想添加一個檢查約束,因此除gm或catcher(列位置中的值)之外,nick不應超過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