sql >> Database >  >> RDS >> Sqlserver

Een UPDATE 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 ​​UPDATE 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       | Long Tail |
+---------+-----------+

En laten we zeggen dat we een van de namen van de kat willen bijwerken.

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

UPDATE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 3'
    )
SET CatName = 'Short Tail';

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  |
| 2       | Scratch    |
| 3       | Short Tail |
+---------+------------+

Zoals verwacht is de derde rij nu bijgewerkt.

Een ding waar ik op moet wijzen is dat OPENQUERY accepteert geen variabelen voor zijn argumenten.


  1. Codeigniter-transacties

  2. onbeforeprint() en onafterprint() equivalent voor niet-IE-browsers

  3. Kan iemand uitleggen wat de MERGE-instructie echt doet in Oracle?

  4. 5 probleemloze tips om SQL UPDATE-instructie te gebruiken met JOIN