Problem mit Trigger und Tabelle, die text-Werte enthält

14/09/2007 - 10:32 von Ronald Siegel | Report spam
Hallo,

diese Anfrage ich aus Versehen fàlschlicherweise bereits in der Group
microsoft.public.de.german.entwickler.dotnet.datenbank gestellt.

Ich versuche mich gerade am Trigger zu einer Tabelle, die auch eine Spalte
mit text-Werten enthàlt (HtmlInhalt.Inhalt sind text-Werte, nàmlich der
Inhalt von Internetseiten).
HtmlInhalt besteht somit aus den HtmlInhalt.ID (int, PK, autoinkrement),
HtmlInhalt.Inhalt (text).

Lokal ist SQL 2005 Express im Einsatz, auf dem Server SQL 2000.

Die Tabelle Stichworte besteht aus den Spalten ID (int, PK, autoinkrement)
und Eintrag (varchar).

Mit dem Trigger soll bezweckt werden, dass nach Einfügen neuer Seiten, in
den neuen Seiten enthaltene Stichworte (aus der namensgleichen Tabelle)
gefunden werden. Das funktioniert leider nicht, wie ich es mir wünsche.

Zum Test habe ich die ursprüngliche Methode aufgesplittet. Die korrekte
neue ID gibt er mir im ersten Teil an, allerdings findet er keine
Stichworte innerhalb des Triggers. Erst wenn ich die Methode hinterher
manuell ausführe, funktioniert sie.

Ich danke für Tipps bereits im Voraus.
Grüße
Ron

CREATE TRIGGER verknuepfeBeitragStichworte
ON HtmlInhalt
AFTER INSERT
AS
BEGIN

INSERT test_1
SELECT i.ID
FROM INSERTED as i

INSERT test_2
SELECT Stichworte.ID as ID
FROM Stichworte, HtmlInhalt, INSERTED as i
WHERE
HtmlInhalt.Links_ID = i.Links_ID
AND HtmlInhalt.Inhalt LIKE '%[>,.(¥"; ]'+Stichworte.Eintrag+'%';

END

In der Doku steht lediglich "In einem DELETE-, INSERT- oder
UPDATE-Trigger làsst SQL Server keine text-, ntext- oder
image-Spaltenverweise in der inserted- und der deleted-Tabelle zu, wenn der
Kompatibilitàtsgrad gleich 70 ist. Auf die text-, ntext- und image-Werte in
der inserted- und der deleted-Tabelle kann nicht zugegriffen werden. Um den
neuen Wert in einem INSERT- oder UPDATE-Trigger abzurufen, verknüpfen Sie
die inserted-Tabelle mit der ursprünglichen Aktualisierungstabelle."
Gerade letzte Bemerkung dachte ich eingehalten zu haben.
 

Lesen sie die antworten

#1 Frank Kalis
14/09/2007 - 11:04 | Warnen spam
"Ronald Siegel" wrote:

diese Anfrage ich aus Versehen fàlschlicherweise bereits in der Group
microsoft.public.de.german.entwickler.dotnet.datenbank gestellt.




:-)

Ich versuche mich gerade am Trigger zu einer Tabelle, die auch eine Spalte
mit text-Werten enthàlt (HtmlInhalt.Inhalt sind text-Werte, nàmlich der
Inhalt von Internetseiten).
HtmlInhalt besteht somit aus den HtmlInhalt.ID (int, PK, autoinkrement),
HtmlInhalt.Inhalt (text).

Lokal ist SQL 2005 Express im Einsatz, auf dem Server SQL 2000.



...
In der Doku steht lediglich "In einem DELETE-, INSERT- oder
UPDATE-Trigger làsst SQL Server keine text-, ntext- oder
image-Spaltenverweise in der inserted- und der deleted-Tabelle zu, wenn der
Kompatibilitàtsgrad gleich 70 ist. Auf die text-, ntext- und image-Werte in
der inserted- und der deleted-Tabelle kann nicht zugegriffen werden. Um den
neuen Wert in einem INSERT- oder UPDATE-Trigger abzurufen, verknüpfen Sie
die inserted-Tabelle mit der ursprünglichen Aktualisierungstabelle."
Gerade letzte Bemerkung dachte ich eingehalten zu haben.



Dann ist das in der 2000 BOL etwas "schwammig" ausgedrückt. Jetzt steht dort
ganz eindeutig:

"SQL Server 2005 does not allow for text, ntext, or image column references
in the inserted and deleted tables for AFTER triggers. However, these data
types are included for backward compatibility purposes only."

Du könntest allerdings anstelle des AFTER Triggers einen INSTEAD OF Trigger
verwenden.
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.de

Ähnliche fragen