sql >> Database >  >> RDS >> Sqlserver

Een DELETE Pass-Through-query uitvoeren in SQL Server

In SQL Server, de OPENQUERY rowset-functie stelt u in staat om een ​​pass-through-query uit te voeren op een gekoppelde server.

OPENQUERY wordt vaak verwezen in de FROM clausule van een query alsof het een tabel is, maar er kan ook naar worden verwezen als de doeltabel van een INSERT , UPDATE , of DELETE verklaring.

Dit artikel geeft een voorbeeld van het gebruik van OPENQUERY om een ​​DELETE . te doen pass-through-query.

Voorbeeld

Stel dat de gekoppelde server Homer . heet heeft een tabel in de Pets database genaamd Cats met de volgende gegevens.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Resultaat:

+---------+------------+
| CatId   | CatName    |
|---------+------------|
| 1       | FluffDupp  |
| 2       | Scratch    |
| 3       | Short Tail |
+---------+------------+

En laten we zeggen dat we een van de katten uit de database willen verwijderen.

We zouden dat kunnen doen met een DELETE pass-through-query tegen de gekoppelde server, zoals deze.

DELETE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
    );

Resultaat:

(1 row affected)

Controleer de resultaten

We kunnen nu een SELECT . uitvoeren pass-through-query om de resultaten te zien.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Resultaat:

+---------+------------+
| CatId   | CatName    |
|---------+------------|
| 1       | FluffDupp  |
| 3       | Short Tail |
+---------+------------+

Zoals verwacht is de tweede rij verwijderd en zijn er nu nog maar twee rijen over.

Een ding om op te merken is dat OPENQUERY accepteert geen variabelen voor zijn argumenten.


  1. Een CHECK-beperking inschakelen in SQL Server (T-SQL-voorbeeld)

  2. Alles wat u moet weten over SQL Server JOINS

  3. 3 manieren om te detecteren of een string overeenkomt met een reguliere expressie in MySQL

  4. SQL Server hoofdlettergevoeligheid controleren?