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

Sådan laver du en UPDATE Pass-Through Query i SQL Server

I SQL Server er OPENQUERY rowset-funktionen giver dig mulighed for at udføre en pass-through-forespørgsel på en forbundet server.

OPENQUERY refereres almindeligvis til i FROM klausul af en forespørgsel, som om den var en tabel, men den kan også refereres til som måltabellen for en INSERT , UPDATE eller DELETE erklæring.

Denne artikel præsenterer et eksempel på brug af OPENQUERY for at lave en UPDATE pass-through-forespørgsel.

Eksempel

Antag, at den linkede server kaldet Homer har en tabel i Pets database kaldet Cats med følgende data.

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

Resultat:

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

Og lad os sige, at vi vil opdatere et af kattens navne.

Vi kunne gøre det ved at bruge en UPDATE pass-through-forespørgsel mod den linkede server, som denne.

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

Resultat:

(1 row affected)

Tjek resultaterne

Vi kan nu køre en SELECT pass-through-forespørgsel for at se resultaterne.

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

Resultat:

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

Som forventet er tredje række nu blevet opdateret.

En ting, jeg bør påpege, er, at OPENQUERY accepterer ikke variabler for sine argumenter.


  1. MySQL GREATEST() Funktion – Find det største argument i en liste over argumenter

  2. Hvordan tilføjer du en redigeringsknap til hver række i en rapport i Oracle APEX?

  3. Sådan forbinder du to tabeller ved hjælp af en kommasepareret liste i sammenføjningsfeltet

  4. MYSQL importerer data fra csv ved hjælp af LOAD DATA INFILE