J'ai deux tables comme ci-dessous.Oracle SQL ajouter une contrainte de vérification à plusieurs niveaux de table
créer une table emp (empno varchar2 (5), position varchar2 (5));
créer des informations de table (empno varchar2 (5), nick varchar2 (20)); Empno est la clé primaire pour les deux tables et empno est également une clé étrangère dans info, avec table parent emp.
Maintenant je veux ajouter une contrainte de vérification de sorte que, sauf pour le gm ou catcher (valeur dans la position de la colonne), le pseudo ne doit pas dépasser 16 lettres.
J'ai essayé la méthode UDF comme ci-dessous.
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);
Cependant, cela ne fonctionne pas dans Oracle Live SQL.
Aidez-nous s'il vous plaît. Merci d'avance.
Vous avez dit que vous utilisez Oracle, mais votre code ressemble plus à un code TSQL me – GurV