Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Supprimer des données via une fonction table dans SQL Server

Dans SQL Server, il est possible d'utiliser une fonction table (TVF) pour supprimer des données des tables sous-jacentes que la TVF interroge.

Pour supprimer des données de table via un TVF, il suffit d'utiliser le même DELETE T-SQL syntaxe que vous utiliseriez si vous supprimiez directement une ligne du tableau.

Exemple

Voici un exemple rapide à démontrer.

La fonction

Voici une fonction table en ligne rapide qui sélectionne les données de base d'une table.

CREATE FUNCTION dbo.udf_Cats_ITVF()
    RETURNS TABLE
AS
RETURN (
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats
    );
GO

Cette fonction sélectionne toutes les lignes d'une table.

Je peux également utiliser cette fonction pour supprimer des lignes de cette table.

Sélectionnez les données avec la fonction

Voici comment nous invoquerions normalement la fonction avec un SELECT déclaration. Cela nous permet de voir les données actuelles dans la table sous-jacente.

SELECT * FROM udf_Cats_ITVF();

Résultat :

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
| 5       | Scratchy  | 1111111111 |
+---------+-----------+------------+

Il y a donc cinq rangées.

Supprimons Scratchy.

Supprimer une ligne via la fonction

Utilisons maintenant le TVF pour supprimer une ligne.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Résultat :

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

J'ai donc réussi à supprimer Scratchy à l'aide de la fonction de table en ligne.