Don.Zwiebel Geschrieben 6. Oktober 2004 Teilen Geschrieben 6. Oktober 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 6. Oktober 2004 Teilen Geschrieben 6. Oktober 2004 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 ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Don.Zwiebel Geschrieben 6. Oktober 2004 Autor Teilen Geschrieben 6. Oktober 2004 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 ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 6. Oktober 2004 Teilen Geschrieben 6. Oktober 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.