sql >> Databáze >  >> RDS >> Sqlserver

Jak provést DELETE Pass-Through Query v SQL Server

V SQL Server, OPENQUERY funkce sady řádků umožňuje provést předávací dotaz na propojeném serveru.

OPENQUERY se běžně odkazuje v FROM klauzule dotazu, jako by to byla tabulka, ale lze na ni také odkazovat jako na cílovou tabulku INSERT , UPDATE nebo DELETE prohlášení.

Tento článek představuje příklad použití OPENQUERY proveďte DELETE předávací dotaz.

Příklad

Předpokládejme propojený server s názvem Homer má tabulku v Pets databáze s názvem Cats s následujícími údaji.

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

Výsledek:

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

A řekněme, že chceme odstranit jednu z koček z databáze.

Mohli bychom to udělat pomocí DELETE předávací dotaz proti propojenému serveru, jako je tento.

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

Výsledek:

(1 row affected)

Zkontrolujte výsledky

Nyní můžeme spustit SELECT předávací dotaz, abyste viděli výsledky.

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

Výsledek:

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

Podle očekávání byl odstraněn druhý řádek a nyní zbývají pouze dva řádky.

Jedna věc, kterou je třeba poznamenat, je, že OPENQUERY nepřijímá proměnné pro své argumenty.


  1. Pokročilé převzetí služeb při selhání pomocí háčků Post/Pre Script

  2. uložené procedury s sqlAlchemy

  3. [Video] Úvod do datových typů JSON v PostgreSQL

  4. Obchodní logika:Databázová nebo aplikační vrstva