Path: dp-news.maxwell.syr.edu!spool.maxwell.syr.edu!drn.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.wirehub.nl!news.tele.dk!news.tele.dk!small.news.tele.dk!lnewsoutpeer01.lnd.ops.eu.uu.net!lnewsinpeer01.lnd.ops.eu.uu.net!emea.uu.net!materna.de!not-for-mail
From: "Elena Ivanova" <elena.ivanova@materna.de>
Newsgroups: comp.databases.oracle.misc
Subject: Re: delete record in update trigger possible
Date: Thu, 11 Nov 2004 13:40:18 +0100
Organization: MaternaGmbH
Lines: 75
Message-ID: <cmvmjr$bum$1@pentheus.materna.de>
References: <4d32d1be.0411092240.28fc2300@posting.google.com> <opsg8mwdvjm0et4w@news.online.de>
NNTP-Posting-Host: bui-pc019.bui.materna.com
X-Trace: pentheus.materna.de 1100176827 12246 139.2.54.99 (11 Nov 2004 12:40:27 GMT)
X-Complaints-To: news@materna.de
NNTP-Posting-Date: Thu, 11 Nov 2004 12:40:27 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Xref: dp-news.maxwell.syr.edu comp.databases.oracle.misc:114160

Hi,
you can try to use instead of trigger.
SQL> create table tbl_test(n number);

Tabelle wurde angelegt.

SQL> create view viw_test as select * from tbl_test;

View wurde angelegt.

SQL> create trigger trg_test instead of update on viw_test
  2  begin
  3  delete from tbl_test where n=:old.n;
  4  end;
  5  /

Trigger wurde erstellt.

SQL> insert into tbl_test values(1);

1 Zeile wurde erstellt.

SQL> commit;

Transaktion mit COMMIT abgeschlossen.

SQL> select * from viw_test;

         N
----------
         1

SQL> update viw_test set n=5 where n=1;

1 Zeile wurde aktualisiert.

SQL> commit;

Transaktion mit COMMIT abgeschlossen.

SQL> select * from viw_test;

Es wurden keine Zeilen ausgewählt

Regards
Elena Ivanova

"Frank Piron" <empty@zero.nil> schrieb im Newsbeitrag
news:opsg8mwdvjm0et4w@news.online.de...
> Am 9 Nov 2004 22:40:03 -0800 schrieb Andre <avanrossem@hotmail.com>:
>
> > Hello all,
> >
> > I have a simple (?) question.
> > In an update trigger I want to delete a record.
> >
> > For example:
> > If :new.correctprocessed = 1 then
> >   delete this record;
> > end if;
> >
> > Is this possible or do I have to do it another way?
>
> This is not possible, because the trigger table is
> "mutating" and therefore the trigger may not "see"
> it.
> Seems to me an odd behaviour, if the database deletes
> records which an application tries to update.
>
> -- 
> Frank Piron,
> etfrankatkonaddotn
> (leftrotate two)


