Ich arbeite seit einigen Wochen mit SQL-Abfragen und versuche, aus meinen Fehlern zu lernen und zu verstehen. Ich habe eine Tabelle mit zwei Spalten IsInvisible (bit)
und ShortName (string)
und wenn eine geändert wird, um die andere zu aktualisieren, mag ich auch: - wenn ein ~ vor dem Kurznamen hinzugefügt wird, um IsInvisible
auf 1 zu setzen , und wenn ~ entfernt wird, um es auf 0 zu setzen - wenn IsInvisible
gesetzt ist 1, um ~ vor dem Kurznamen hinzuzufügen, und wenn auf 0 gesetzt, um ihn zu entfernen.
Ich habe so etwas versucht wie:
ALTER TRIGGER [dbo].[updateInvisibility]
ON [dbo].[table]
AFTER UPDATE
AS
BEGIN
UPDATE t
SET IsInvisible = (CASE WHEN i.ShortName like '~%' THEN 1 ELSE 0 END),
ShortName = (CASE WHEN i.IsInvisible = 1 AND t.ShortName NOT LIKE '~%'
THEN '~' + t.ShortName
ELSE t.ShortName
END)
FROM table t JOIN
inserted i
ON t.Id = i.Id;
end
Mein Problem ist, dass beim Aktualisieren einer oder beider Spalten nichts passiert und folgende Fehlermeldung angezeigt wird:
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)
Was mache ich falsch?
Die Option "Auslöser zulassen, andere auszulösen" zeigt "True" an.