sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man gör en DELETE Pass-Through Query i SQL Server

I SQL Server, OPENQUERY rowset-funktionen gör att du kan köra en pass-through-fråga på en länkad server.

OPENQUERY refereras ofta till i FROM sats i en fråga som om den vore en tabell, men den kan också refereras till som måltabellen för en INSERT , UPDATE , eller DELETE uttalande.

Den här artikeln presenterar ett exempel på hur du använder OPENQUERY för att göra en DELETE genomkopplingsfråga.

Exempel

Antag att den länkade servern heter Homer har en tabell i Pets databas som heter Cats med följande data.

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

Resultat:

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

Och låt oss säga att vi vill ta bort en av katterna från databasen.

Vi skulle kunna göra det med en DELETE genomgångsfråga mot den länkade servern, så här.

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

Resultat:

(1 row affected)

Kontrollera resultaten

Vi kan nu köra en SELECT genomgångsfråga för att se resultaten.

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

Resultat:

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

Som väntat togs den andra raden bort och det finns nu bara två rader kvar.

En sak att notera är att OPENQUERY accepterar inte variabler för sina argument.


  1. MariaDB JSON_SEARCH() Förklarad

  2. DATETIMEOFFSETFROMPARTS() Exempel i SQL Server (T-SQL)

  3. Ska jag skapa en klass som ärver SQLiteOpenHelper för varje tabell i min databas?

  4. Hur man hämtar data från databasen och visar dem som en ListView