sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL9.4.2で「CREATETRIGGER」が使用するロック(ある場合)

    Postgres-XLをメインのPostgreSQLドキュメントと比較しています。歴史は共有されていますが、2つの異なる製品。 Postgres-XLにはたくさんがあります 在庫のPostgreSQLからの変更の。

    CREATE TRIGGER Pgのドキュメントに記載されているはずですが、記載されていません。これは見落としです。

    ソースコードをざっと見てみると、CREATE TRIGGER ShareRowExclusiveLockを取ります したがって、この場合、XLのドキュメントはPostgreSQLの動作と一致します。

    次のような操作を行うことで、ソースを確認せずに自分でこれを確認できます。

    CREATE TABLE test();
    
    CREATE OR REPLACE FUNCTION dummy_tg() RETURNS TRIGGER
    LANGUAGE plpgsql AS $$ BEGIN END; $$;
    
    BEGIN;
    
    CREATE TRIGGER blah BEFORE INSERT ON test FOR EACH ROW EXECUTE PROCEDURE dummy_tg();
    
    \x
    
    SELECT * FROM pg_locks 
    WHERE pid = pg_backend_pid() 
    AND relation = 'test'::regclass;
    
    ROLLBACK;
    

    ...これは、私が情報源の読み方について間違っていたことを示しています。理由は次のとおりです。

    locktype | relation
    mode     | AccessExclusiveLock
    

    AccessExclusiveLockが必要でした。




    1. パッケージ宣言の内容

    2. MySQLのWHERE列=での疑問符の重要性は何ですか?

    3. SQLServerでクエリタイムアウトを強制する

    4. ダンプからherokupostgresデータベースにインポートできません