Распространенный SQL: может ли клиент отправить несколько операторов SQL в одном запросе к базе данных? - PullRequest
0 голосов
/ 11 октября 2018

Из клиентского приложения можно ли отправлять несколько операторов SQL одновременно в PSQ v13?

У меня есть ситуация, когда я хочу отправить как оператор удаления, так и оператор вставки в одномзвонить через ODBC.Было бы также идеально, если бы я мог сделать это как транзакцию, чтобы оба оператора были либо успешными, либо неудачными.

Возможно ли что-либо из перечисленного без создания хранимой процедуры на стороне сервера, и если да, то каков правильный синтаксис?для объединения нескольких операторов?

1 Ответ

0 голосов
/ 11 октября 2018

Невозможно выполнить оба оператора и гарантировать, что оба они будут выполнены без использования транзакции.Транзакции доступны только в рамках хранимых процедур.

То, что вы описываете (выполнение операторов DELETE и INSERT атомарным способом), идеально подходит для хранимой процедуры с использованием транзакции.

Примерно так - хорошее начало:

CREATE PROCEDURE TransactionTest (:ID integer)
RETURNS (
ID INTEGER);
BEGIN
  START TRANSACTION;
    DELETE FROM Table where ID = :ID;
    SELECT MAX(ID) from table;
  COMMIT WORK;
END;
...