データベース INSTEAD OF INSERT ON テーブルにトリガーを作成し、何らかの操作を行ってから、関連する別のテーブルにデータを挿入します。自動コミットを無効にし、トリガー内で別の分離レベルを設定する必要があります。どうすればよいですか?
質問する
8832 次
2 に答える
8
PostgreSQL には、組み込み SQL を除いて、自動コミットを無効にする設定はありません。たとえば、PSQL で自動コミットをオフに設定しようとすると、次のようなエラーが表示されます。
sandbox=# set autocommit=off;
ERROR: SET AUTOCOMMIT TO OFF is no longer supported
代わりに、BEGIN を使用してトランザクションを開始してください。PostgreSQL では、トランザクションを開始し、単一のステートメントで分離レベルを設定できます。(他のプラットフォームでは複数のステートメントが必要です。) PostgreSQL 9.2 のスケルトン構文は次のとおりです。
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
where transaction_mode is one of:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |
READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
COMMIT または ROLLBACK でトランザクションを終了します。
于 2013-07-30T01:38:44.383 に答える