在 OPENQUERY 中选择记录用:
SELECT * FROM OPENQUERY (linked_server, "SELECT * FROM msgs");
那么如何在 OPENQUERY 中执行 INSERT、UPDATE、DELETE 这些更新操作呢?
OPENQUERY (linked_server, "INSERT INTO msgs(...) VALUES(...)");
以上做法是不正确的,正确做法如下:
INSERT 示例
INSERT OPENQUERY (linked_server, 'SELECT title, content FROM msgs')
VALUES ('title', 'content');
UPDATE 示例
UPDATE OPENQUERY (linked_server, 'SELECT title, content FROM msgs WHERE id=1')
SET title = 'newTitle', content = 'newContent';
DELETE 示例
DELETE OPENQUERY (linked_server, 'SELECT id FROM msgs WHERE id=1');
注意
OPENQUERY 不接受参数变量,也就是说:DELETE OPENQUERY (linked_server, 'SELECT id FROM msgs WHERE id=' + @id); 是不正确的,但可以这样做:DELETE OPENQUERY (linked_server, 'SELECT id FROM msgs') WHERE id=@id); 。
T-SQL 中,INSERT 可以省略 INTO,DELETE 也可以省略 FROM。
INSERT 时必须明确 SELECT 的字段。
相关阅读