Zum Inhalt springen

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


Don.Zwiebel

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...