Danny Tramnitzke wrote : 

>This trigger-example seems to work, but I didn't get the defined
>Error-Message (errormess).
>When I delete a value in table "Abteilung", which is a foreign key I get
>always the Message

>"KB Stack op illegal".

>Someone told me, that might be a kernel-error or something? What do you
>mean?

 
>Thats my Trigger, and I want see my own Errormessage, when I delete a row
>in
>Table "Abteilung" with a foreign key (aptnr). 
 
 
> drop trigger abteilung_delete of Abteilung
 //
> Create Trigger abteilung_delete for Abteilung after delete execute 
> (
>     var  errorNo int;
>             errormess char(80);
>             
>     if exists (
>       select * from perso
>       where perso.aptnr = old.aptnr   
>         )
> 
>       then
>         errorNo = 800;
>         errormess = 'geht nicht, weil Fremdschl�ssel in Perso vorhanden';
>         stop (errorNo, errormess);
>  )
 
I think the problem is the exists clause in your trigger. The exists predicate is not 
allowed in an
IF-Statement, but unfortunately the compiler does not reject it but produces wrong 
code.
You may formulate your trigger as follows :

Create Trigger abteilung_delete for Abteilung after delete execute 
(
    var  errorNo int;
         cnt     int;
         errormess char(80);
     
    select count(*) into :cnt from perso where perso.aptnr = old.aptnr where rowno <= 
1;
    if cnt > 0
    then
        begin
        errorNo = 800;
        errormess = 'geht nicht, weil Fremdschl�ssel in Perso vorhanden';
        stop (errorNo, errormess);
        end;
)

Caution : this trigger is not sufficient, if you have concurrent inserters into perso 
which may
          rollback their transaction. If that case is possible, you need a table lock 
in share mode
          for table perso.

Thomas 

-- 
Thomas Anhaus
SAP DB, SAP Labs Berlin
[EMAIL PROTECTED]
http://www.sapdb.org/
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general


_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general

Reply via email to