Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como fazer uma consulta de passagem DELETE no SQL Server


No SQL Server, o OPENQUERY A função de conjunto de linhas permite que você execute uma consulta de passagem em um servidor vinculado.

OPENQUERY é comumente referenciado no FROM cláusula de uma consulta como se fosse uma tabela, mas também pode ser referenciada como a tabela de destino de um INSERT , UPDATE , ou DELETE demonstração.

Este artigo apresenta um exemplo de uso de OPENQUERY para fazer um DELETE consulta de passagem.

Exemplo


Suponha que o servidor vinculado chamado Homer tem uma tabela no Pets banco de dados chamado Cats com os seguintes dados.
SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

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

E digamos que queremos excluir um dos gatos do banco de dados.

Podemos fazer isso usando um DELETE consulta de passagem no servidor vinculado, assim.
DELETE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
    );

Resultado:
(1 row affected)

Verifique os resultados


Agora podemos executar um SELECT consulta de passagem para ver os resultados.
SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

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

Como esperado, a segunda linha foi excluída e agora restam apenas duas linhas.

Uma coisa a notar é que OPENQUERY não aceita variáveis ​​para seus argumentos.