sql >> Database >  >> RDS >> Sqlserver

Gegevens verwijderen via een tabelwaardefunctie in SQL Server

In SQL Server is het mogelijk om een ​​tabelwaardefunctie (TVF) te gebruiken om gegevens te verwijderen uit de onderliggende tabellen die door de TVF worden opgevraagd.

Om tabelgegevens via een TVF te verwijderen, gebruikt u gewoon dezelfde T-SQL DELETE syntaxis die u zou gebruiken als u een rij rechtstreeks uit de tabel verwijdert.

Voorbeeld

Hier is een snel voorbeeld om te demonstreren.

De Functie

Hier is een snelle inline tabelwaardefunctie die basisgegevens uit een tabel selecteert.

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

Deze functie selecteert alle rijen uit een tabel.

Ik kan deze functie ook gebruiken om rijen uit die tabel te verwijderen.

Selecteer gegevens met de functie

Hier is hoe we normaal gesproken de functie aanroepen met een SELECT uitspraak. Dit stelt ons in staat om de huidige gegevens in de onderliggende tabel te zien.

SELECT * FROM udf_Cats_ITVF();

Resultaat:

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

Er zijn dus vijf rijen.

Laten we Scratchy verwijderen.

Een rij verwijderen via de functie

Laten we nu de TVF gebruiken om een ​​rij te verwijderen.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Resultaat:

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

Dus ik heb Scratchy met succes verwijderd met behulp van de inline-tabelwaardefunctie.


  1. Langzame migratie naar de cloud

  2. Autonome transactie in PostgreSQL 9.1

  3. 4 kant-en-klare SQL-gegevensconversiemethoden en gebruiksscenario's

  4. Hoe gebruik je ANY in plaats van IN in een WHERE-clausule met Rails?