In SQL Server ist es möglich, eine Tabellenwertfunktion (TVF) zu verwenden, um Daten aus den zugrunde liegenden Tabellen zu löschen, die die TVF abfragt.
Um Tabellendaten über ein TVF zu löschen, verwenden Sie einfach denselben T-SQL-DELETE
Syntax, die Sie verwenden würden, wenn Sie eine Zeile direkt aus der Tabelle löschen würden.
Beispiel
Hier ist ein kurzes Beispiel zur Veranschaulichung.
Die Funktion
Hier ist eine schnelle Inline-Tabellenwertfunktion, die grundlegende Daten aus einer Tabelle auswählt.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Diese Funktion selektiert alle Zeilen einer Tabelle.
Ich kann diese Funktion auch verwenden, um Zeilen aus dieser Tabelle zu löschen.
Daten mit der Funktion auswählen
So rufen wir die Funktion normalerweise mit einem SELECT
auf Erklärung. Dadurch können wir die aktuellen Daten in der zugrunde liegenden Tabelle sehen.
SELECT * FROM udf_Cats_ITVF();
Ergebnis:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Es gibt also fünf Reihen.
Lass uns Scratchy löschen.
Eine Zeile über die Funktion löschen
Lassen Sie uns nun das TVF verwenden, um eine Zeile zu löschen.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Ergebnis:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Also habe ich Scratchy erfolgreich mit der Inline-Tabellenwertfunktion gelöscht.