sql >> Database teknologi >  >> RDS >> Sqlserver

Slet data via en funktion med tabelværdi i SQL Server

I SQL Server er det muligt at bruge en tabelværdi-funktion (TVF) til at slette data fra de underliggende tabeller, som TVF'et forespørger på.

For at slette tabeldata via en TVF skal du blot bruge den samme T-SQL DELETE syntaks, som du ville bruge, hvis du sletter en række fra tabellen direkte.

Eksempel

Her er et hurtigt eksempel at demonstrere.

Funktionen

Her er en hurtig indlejret tabelværdi-funktion, der vælger grundlæggende data fra en tabel.

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

Denne funktion vælger alle rækker fra en tabel.

Jeg kan også bruge denne funktion til at slette rækker fra den tabel.

Vælg Data med funktionen

Her er, hvordan vi normalt ville starte funktionen med en SELECT udmelding. Dette gør det muligt for os at se de aktuelle data i den underliggende tabel.

SELECT * FROM udf_Cats_ITVF();

Resultat:

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

Så der er fem rækker.

Lad os slette Scratchy.

Slet en række via funktionen

Lad os nu bruge TVF til at slette en række.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Resultat:

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

Så jeg slettede Scratchy med succes ved at bruge den indbyggede tabelværdi-funktion.


  1. Mac OS X - EnvironmentError:mysql_config ikke fundet

  2. Erstat unicode-tegn i PostgreSQL

  3. SQL Developer 4.1.3 udgivet

  4. Prag PostgreSQL Developer Day 2016