PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво заключване, ако има такова, използва 'CREATE TRIGGER' в PostgreSQL 9.4.2

Вие сравнявате Postgres-XL с основната документация на PostgreSQL. Два различни продукта, макар и с обща история. 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Генерирайте времеви редове с ежедневна статистика, като използвате заявка на PostgreSQL

  2. Достъп до PostgreSQL чрез C++-интерфейс (грешка на линкера)

  3. Разбиране на производителността на заявките на PostgreSQL

  4. Изпълнете файл с SQLExec, съдържащ $$ знаци

  5. Бавно избиране на отделна заявка на postgres