auf einem Suchtext in meiner Anwendung Je Ich habe Eltern und Kind Datensätze aus einer Tabelle in folgendem Format löschen:löschen Eltern und Kind Aufzeichnungen je nach Suchtext
tabItem
+--------+--------------+----------+-----------------+
| ItemId | ItemParentId | ItemName | ItemDescription |
+--------+--------------+----------+-----------------+
Wenn ich zum Beispiel "Informationen" in ein Textfeld in meiner Anwendung eintippe und auf "Filter" klicke, muss ich jedes Eltern- und Kindelement entfernen, wenn das unterste Element im Baum "Informationen" enthält.
Baum für eine bessere Erklärung:
Category 1
|
+--- Subcategory
|
+--- Subsubcategory
|
+--- Item (contains "information" in ItemDescription)
Category 2
|
+--- Subcategory
|
+--- Subsubcategory
|
+--- Item (doesn't contain "information")
Jetzt muss ich den Artikel löschen, die „Information“ und all seine Eltern und Großeltern enthält.
Ich habe versucht, es mit Hilfe der folgenden cte
:
WITH cte_toDelete
AS
(
SELECT *
FROM tabItem
UNION ALL
SELECT cte_toDelete.*
FROM cte_toDelete
INNER JOIN tabItem ON cte_toDelete.ItemParentId = tabItem.ItemId
)
DELETE FROM tabItem
WHERE ItemId IN
(
SELECT ItemId
FROM cte_toDelete
WHERE cte_toDelete.ItemName NOT LIKE '%' + @SearchText + '%'
AND cte_toDelete.ItemDescription NOT LIKE '%' + @SearchText + '%'
)
Aber wenn ich diese Zeilen laufen, bekomme ich folgende Fehlermeldung:
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
Was mit meinem cte
falsch ist?