Zum Inhalt springen

[Sql Server 2000] inserted / deleted mit Text bei AFTER Trigger


Empfohlene Beiträge

Geschrieben

Hi folks,

Tabelle:

a int,

b int,

c int,

d text

Ich brauche das:

select * into #ins from inserted

in dieser Form:

select *(ohne Text / nText / image - Felder ) into #ins from inserted.

Ich habe versucht einen String wie folgt zusammenzubauen: (INFORMATIONSCHEMES)

select @sql = 'select a,b,c into #ins from inserted'

exec(@sql)

Nach dem Ausführen kommt die Fehlermeldung das inserted nicht bekannt ist.

Wie kann ich das umgehen / lösen ?

Thx.

Geschrieben

verstehe nicht ganz den sinn aber egal,

im Query Analyzer direkt das ausführen


select a,b,c into #ins from inserted

kriegst du dann aber im #ins drei int Spalten.

Willst du im #ins was anderes als int haben muss du die Tabelle erst mal

erstellen und dann bei select die int casten

Wo zu brauchst du denn eine temporäre Tabelle ??

Geschrieben

Also das Problem an der Sache ist folgendes:

Ich brauche einen AFTER - Trigger, der an einer Tabelle durchgeführte Änderungen feldweise speichert (pro geänderter Column einen Datensatz).

Um auf die alten / neuen Werte zuzugreifen verwende ich die Tabellen inserted und deleted. Aus den gesammelten Informationen setze ich mir einen Insert - String zusammen, den ich mit exec(@sql) ausführen will. Wenn ich in diesem String inserted / deleted verwende, versteht der Sql Server das aber nicht und gibt "Ungültiger Objektname: inserted" zurück.

Wenn ich aber ein Feld vom Typ Text, nText oder Image habe, funktioniert

"select * into #ins from inserted" nicht mehr und ich muss es irgendwie schaffen das Text - Feld anhand der INFORMATIONSCHEMES von der Überwachung auszuschließen, da ich die Felder nicht manuell eingeben möchte, sondern anhand des Tabellennamen ermittle.

Das ganze funktioniert wunderbar, bis ein Feld vom Typ Text in der Tabelle auftaucht. Das darf bei AFTER - Triggern nicht über inserted / deleted gelesen werden.

ALTERNATIV: Wie kann ich das Statement, das ein INSTEAD OF - Trigger abfängt ausführen, nachdem ich es evtl. geprüft oder modifiziert habe ? Kann ich das Statement irgendwoher bekommen ?

Ich weiß, Fragen über Fragen ! :)

Geschrieben
Also das Problem an der Sache ist folgendes:

Ich brauche einen AFTER - Trigger, der an einer Tabelle durchgeführte Änderungen feldweise speichert (pro geänderter Column einen Datensatz).

Um auf die alten / neuen Werte zuzugreifen verwende ich die Tabellen inserted und deleted. Aus den gesammelten Informationen setze ich mir einen Insert - String zusammen, den ich mit exec(@sql) ausführen will. Wenn ich in diesem String inserted / deleted verwende, versteht der Sql Server das aber nicht und gibt "Ungültiger Objektname: inserted" zurück.

Is ganz normal und kann dir auch oefter mal mit temporaeren Tabellen passieren. Das Problem dabei ist wohl, dass dynamisches SQL in einer neuen Session ausgefuehrt wird und du somit ausserhalb des Gueltigkeitsbereiches deiner inserted Tabelle bist.

Wenn ich aber ein Feld vom Typ Text, nText oder Image habe, funktioniert

"select * into #ins from inserted" nicht mehr und ich muss es irgendwie schaffen das Text - Feld anhand der INFORMATIONSCHEMES von der Überwachung auszuschließen, da ich die Felder nicht manuell eingeben möchte, sondern anhand des Tabellennamen ermittle.

Das ganze funktioniert wunderbar, bis ein Feld vom Typ Text in der Tabelle auftaucht. Das darf bei AFTER - Triggern nicht über inserted / deleted gelesen werden.

In der Regel "selectet" man dann halt nur die Schluessel in eine temporaere Tabelle und joint diese dann mit der Original-Tabelle. So kommt man auch an die Textfelder ran.

(Ich hoffe ich hab einigermassen verstanden, was du machen willst :) )

Goos

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...