Chapter 6 Construction de triggers et procédures
Certains SGBD requièrent que le curseur et les variables soient déclarés pour chaque élément avant que le nom de l'élément de modèle n'apparaisse dans le script. Cette déclaration peut prendre la forme d'une instruction qui appelle la procédure correspondante. Vous pouvez utiliser les syntaxes suivantes pour déclarer un élément de modèle de trigger :
Declnom d'élément de modèle de trigger.
Par exemple, la définition de trigger suivante contient l'instruction .DeclInsertChildParentExist
qui déclare l'élément de modèle de trigger .InsertChildParentExist
:
-- Before insert trigger "[%QUALIFIER%]%TRIGGER%" for table "[%QUALIFIER%]%TABLE%"
create trigger [%QUALIFIER%]%TRIGGER% before insert
on [%QUALIFIER%]%TABLE% for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
.DeclInsertChildParentExist
begin
.InsertChildParentExist
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
/
Dans un script de trigger généré, .DeclInsertChildExist
correspond à la définition suivante :
.FOREACH_PARENT()
-- Declaration of InsertChildParentExist constraint for the parent "[%PQUALIFIER%]%PARENT%"
.DEFINE "CURSOR" "cpk%REFNO%_%.25L:TABLE%"
cursor %CURSOR%(.JOIN("var_%.L26:FK% %.L:COLTYPE%", "", ",", ") is")
select 1
from [%PQUALIFIER%]%PARENT%
where .JOIN("%PK% = var_%.L26:FK%", "and ")
and .JOIN("var_%.L26:FK% is not null", "and ", "", ";")
.ENDFOR
| Copyright (C) 2008. Sybase Inc. All rights reserved. |
| |