![]() |
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:
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 ?
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 Gruß Matthias |
Re: Trigger-Problem
Das ist prinzipbedingt so. *Jedes* Insert löst den Insert-Trigger aus, auch solche, die von dort aus getätigt werden.
|
Re: Trigger-Problem
Was bezweckst du damit?
|
Re: Trigger-Problem
@Dax:
Zitat:
@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 |
Re: Trigger-Problem
Aber nicht im geposteten Triggercode
|
Re: Trigger-Problem
nein, das sollte nur als einfaches Beispiel gelten....
|
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.
|
Re: Trigger-Problem
Zitat:
Schau mal in den Einstellungen nach 'rekursive Trigger'... |
Re: Trigger-Problem
Zitat:
|
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