Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
Je souhaite contrôler une saisie de données via une contrainte CHECK respectant des conditions. Celle doit doit débuter par transformer un nombre en charactère .
Ci-dessous le code
CREATE OR REPLACE FUNCTION code_chk (id integer, cat varchar(20), code varchar(20),spletype varchar(20))
RETURNS BOOLEAN AS
$$
New.$1:='A'||New.$1; --Ajout de la lettre A afin de transformer l'ID en charactère--
SELECT CASE
--vérification enfant--
WHEN ($1 like '%11' OR $1 like '%31' OR $1 like '%51' OR $1 like '%71' OR $1 like '%91')
AND (($3='2-FDDUP') AND ($4='Quarter core'))
THEN True
--vérification parent--
WHEN ($1 like '%10' OR $1 like '%30' OR $1 like '%50' OR $1 like '%70' OR $1 like '%90')
AND (($3='1-Par') AND ($4='Quarter core'))
THEN True
--vérification du blanc--
WHEN ($1 like '%09' OR $1 like '%29' OR $1 like '%49' OR $1 like '%69' OR $1 like '%89')
AND (($4='Blank') AND ($3 like 'Blk%'))
THEN True
--vérification du CRM--
WHEN ($1 like '%19' OR $1 like '%39' OR $1 like '%59' OR $1 like '%79' OR $1 like '%99')
AND (($4='Standard') AND ($3 like 'Std%'))
THEN True
ELSE False
END
FROM "X" WHERE ($1>380000 AND $2='QAQC') --Condition pour effectuerla vérification--
$$ LANGUAGE 'sql';
ALTER TABLE "X"
ADD CONSTRAINT "QC Checking"
CHECK (code_chk("SampleID","SampleCategory","SampleCode","SampleType"));
Voici l'erreur que j'obiens
erreur de syntaxe sur ou près de « $1 »
LINE 6: New.$1:='A'||New.$1;
Merci de m'aider
Hors ligne
Bonjour,
L'erreur n'est pas surprenante car vous n'avez pas de variable New. De plus $1 est à priori le paramètre id qui est un integer, donc les tests du type $1 LIKE '...' ne sont pas correct non plus.
Avez-vous essayé de réutiliser le code d'un trigger? Déclarez une variable et utilisez là à la place de New.$1 et $1 et cela devrait corriger le problème. Les LIKE sont également assez bizarre, mais ne sachant pas que ce "id" contient difficile de savoir si c'est une bonne idée ou pas.
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1