Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Trigger-Problem (https://www.delphipraxis.net/109148-trigger-problem.html)

onkelmehli 25. Feb 2008 12:26

Datenbank: MS SQL-Server • Version: 2005 • Zugriff über: ADO

Trigger-Problem
 
Hallo,

kann man innerhalb eines Triggers ein Insert auf die gleiche Tabelle machen, so dass der Trigger erneut ausgeführt wird, oder geht das nicht ?

Bsp.:

SQL-Code:
CREATE TRIGGER [dbo].[I_Positionen]
   ON [dbo].[Positionen]
   AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
IF INSERTED.TYP = 'RE'
BEGIN
           INSERT INTO [dbo].[Positionen] ([posid], [typ]) VALUES ('2','ST')
END
END
Bei meinen Tests wird zwar dieser Insert gemacht, aber der Trigger wird nicht noch einmal durchlaufen. Woran liegt das oder sollte man dies anders lösen ?


Gruß Matthias

Dax 25. Feb 2008 12:29

Re: Trigger-Problem
 
Das ist prinzipbedingt so. *Jedes* Insert löst den Insert-Trigger aus, auch solche, die von dort aus getätigt werden.

mkinzler 25. Feb 2008 12:31

Re: Trigger-Problem
 
Was bezweckst du damit?

onkelmehli 25. Feb 2008 12:43

Re: Trigger-Problem
 
@Dax:

Zitat:

Das ist prinzipbedingt so. *Jedes* Insert löst den Insert-Trigger aus, auch solche, die von dort aus getätigt werden.
das heisst doch aber, das er eigentlich erneut den Trigger "abfeuern" müsste oder ? Dies tut er aber nicht.

@mkinzler:

Innerhalb dieses Triggers finden noch Berechnungen statt. Diese berechneten Werte werden in eine andere Tabelle geschrieben (Update).
Nun ist es so, wenn ein bestimmter berechneter Wert kleiner als 0 ist, dann muss dieser Datensatz in diese Tabelle(siehe oben) abgelegt werden, damit erneut berechnet wird. (dieser bestimmte Wert ist nun größer oder gleich 0 und ich bin zufrieden)

Gruß Matthias

mkinzler 25. Feb 2008 12:50

Re: Trigger-Problem
 
Aber nicht im geposteten Triggercode

onkelmehli 25. Feb 2008 12:51

Re: Trigger-Problem
 
nein, das sollte nur als einfaches Beispiel gelten....

Dax 25. Feb 2008 13:01

Re: Trigger-Problem
 
Dann hab ich mich einfach verlesen - scheinbar stellt MSSQL wieder mal die "andere" Art, etwas zu tun, dar. Postgres zum Beispiel feuert den Trigger erneut.. So wie es sich eigentlich auch gehört.

alzaimar 25. Feb 2008 14:13

Re: Trigger-Problem
 
Zitat:

Zitat von Dax
scheinbar stellt MSSQL wieder mal die "andere" Art, etwas zu tun, dar. Postgres zum Beispiel feuert den Trigger erneut.. So wie es sich eigentlich auch gehört.

Auch MSSQL macht das so. Wenn man es so will. Denn es kann ja sein, das es dann eine Endlosrekursion gibt... Insofern ist MSSQL hier besser, als manch anderes DBMS ;-)

Schau mal in den Einstellungen nach 'rekursive Trigger'...

onkelmehli 25. Feb 2008 14:17

Re: Trigger-Problem
 
Zitat:

Schau mal in den Einstellungen nach 'rekursive Trigger'...
welche Einstellungen meinst du ?

onkelmehli 25. Feb 2008 14:34

Re: Trigger-Problem
 
ok habs gefunden, damit funktioniert es. Danke !

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz