แแแ แ แแฃ แแแแแ, แแแแ แแแแแแแแก แแฌแงแแแแ แชแฎแ แแแแก แฉแแแแฌแแ แแแจแ แ แแฆแแชแแก แแแกแแฃแ แแ แแแแแกแฌแแ แแแแก แแฃแชแแแแแแแแ. แแ แฃแแแ
แแแแแแแแแ, แแแแแแแแ, แ แแแแแจแแช แ แแฆแแชแแก แแแแแกแฌแแ แแแ แแญแแ แแแแแ, แแ แแก แแแ แแขแ แแแแแแฌแแแแ ON UPDATE
, แงแแแแ แชแแแแแแแแก แแแแแขแแแ แแแแแแ แ แแแ แแแแขแแ. แแ แแฅแแแ แฃแแแ แแแแแแฎแแแ แงแแแแแคแแ แ (แแแแแแแแแ, แแฎแแแ แแแแแก แแแแชแแแแแแแชแแ) แแกแ แคแ แแฎแแแแ, แ แแ แแก แแ แแแฃแแแแ แแ แแแแแ แแแแแก.
แแแแแ แฃแแ แแแแ แแแแแ แแแ แขแ แแแแ แแแ!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
UPDATE ...; -- ััั ะดะพะปะณะพ-ะดะพะปะณะพ
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
แกแแแแแแแแแแจแ, แกแฃแ แแก แแ แแก - แงแแแแแคแแ แ แฃแแแ แฉแแแแแแแแแฃแแแ.
แแแแก แแแแ, แ แแ ALTER TABLE
แแฌแแกแแแก AccessExclusive-แกแแแแขแ, แ แแแแแก แฅแแแจแแช แแ แแแแ แแแแแก แแแ แแแแแฃแ แแ, แแฃแแแแช แฃแแ แแแ SELECT
, แแแแแแแแแ แแแ แแคแแ แก แฌแแแแแแฎแแแก. แแแฃ, แกแแแแ แแก แขแ แแแแแฅแชแแ แแแกแ แฃแแแแแ, แงแแแแ, แแแกแแช แแ แกแฃแ แก "แฃแแ แแแแ แฌแแแแแฎแแ", แแแแแแแแแ. แแ แฉแแแ แแแแฎแกแแแก แแก UPDATE
แฉแแแ แแแแฅแแก แฎแแแแ แซแแแแ ...
แแแแแ แกแฌแ แแคแแ แแแแแแ แแแ, แจแแแแแ แกแฌแ แแคแแ แฉแแแ แแแ!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
COMMIT;
UPDATE ...;
BEGIN;
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
แแฅ แฃแแแ แฃแแแแแกแ แแแแแแแ แแแแแ, แแแแแแแก แแ แ แแแชแแแแแแ แแแแแแแแ. แแแแ แแ แแฎแแแแ แแ แ แแ แแแแแแ แแคแฃแญแแแก แแแแ แกแแแแแแแแก:
ALTER TABLE
แแแแแ แแแแแแแ แงแแแแ แกแฎแแ แแแแ แแชแแแก แแแแแแแแ, แแแ แจแแ แแก แฎแแแแ แซแแแแSELECT
- แกแแแแ แขแ แแแแ แ แแแแแ แแฃแแแ, "แแแคแ แแแแ" แแแแแกแแแแ แ แชแแแแแแแ แแแแแแแแ, แฉแแแแ แแ แแ แ. แแ แแก แแ แแแฎแแแแแ แแแ แแแแขแแแจแ, แแฃแแชแ แฃแแแ. แฃแแแแฃแ แแแ!
แกแแกแแแก แชแแแแแแแแก แแแ แแแ
แแกแ แ แแ, แฌแแแ แแแ แกแแแจแ แฉแแแ แฌแแแแฌแงแแแ แคแฃแแแแแแแขแฃแ แฌแแ แขแแแก - แ แแแแ แแ แฃแแแ แแแกแฌแแแแแ แขแ แแแแ แก, แแแแแกแฎแแแแแก แชแฎแ แแแแก "แฉแแแแ" แชแแแแแแแแแ "แแ แ แฉแแแแแกแแแ". "แฉแแแแ" แแแแแขแแแแแฃแแแ แแกแ, แ แแแแ แช แแ แแก, แแแแ แแ "แฉแแแแ แแ แ" แแกแแแ แแแแฅแแแแแแแ. แแแแกแแแแก แจแแแแซแแแแ แแแแแแงแแแแ
แกแแกแแแก_แ แแแแแแแชแแแก_แ แแแ
แแแแแฎแฃแแแแ
แขแ แแแแ แแก แแแฅแแแแแแแ แแกแแแ แแแฅแแแแแแก แแแแคแแแฃแ แแชแแแก แชแแแแแ
แกแแกแแแก_แ แแแแแแแชแแแก_แ แแแ . แ แแแแกแแช แฉแแ แแฃแแแ แแแแแขแแแแแ แแแกแขแ แฃแฅแชแแแแแก แแแ แแจแ (แแแแฃแแแกแฎแแแแ), แขแ แแแแ แแแ แแแแฅแขแแฃแ แแแแ, แ แแแแกแแช แ แแแแแแแชแแแก แ แแแ แแ แแก โแฌแแ แแแจแแแโ (แแแแฃแแแกแฎแแแแ) แแ โแแแแแแฃแ แโ. แขแ แแแแ แแแ แฉแแ แแฃแแแ แแแแแแแแแENABLE REPLICA
, แแแฃแจแแแแแก แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแแแแแแแ แ แกแแกแแแก แ แแแแแ - "แ แแแแแแ" แแ แขแ แแแแ แแแ แฉแแ แแฃแแแ แแแแแแแแแENABLE ALWAYS
, แแแฃแจแแแแแก แแแแแแแ แแแแก แแแแแแแแ แ แ แแแแแแก แแแฃแฎแแแแแแ.
แแแแกแแแฃแแ แแแแ แแแแแ แฎแแแแแกแแแ แแฆแแแแจแแ, แ แแ แแแ แแแแขแ แ แแ แแฎแแแ แงแแแแแก แแ แแแ แแฃแแแ, แ แแแแ แช ALTER TABLE
, แแแแ แแ แแฎแแแแ แฉแแแแก แชแแแแแฃแ แกแแแชแแแแฃแ แแแแจแแ แก. แแแแแแแแแแจแ, แแกแ, แ แแ แแ แแแฎแแแก แแแแแแแชแแแก แขแ แแแแ แแแ:
SET session_replication_role = replica; -- ะฒัะบะปััะธะปะธ ััะธะณะณะตัั
UPDATE ...;
SET session_replication_role = DEFAULT; -- ะฒะตัะฝัะปะธ ะฒ ะธัั
ะพะดะฝะพะต ัะพััะพัะฝะธะต
แแแแแแแ แแแแ แขแ แแแแ แแก แจแแแแแ
แแแแ แแ แแแแแแฆแแแจแแฃแแ แแแ แแแแขแ แแฃแจแแแแก แงแแแแ แขแ แแแแ แแกแแแแก แแ แแแ แแฃแแแ (แแ แกแแญแแ แแ แฌแแแแกแฌแแ โแจแแชแแแแแโ แขแ แแแแ แแแ, แ แแแแแแ แแแแแ แแแแช แแ แแกแฃแ แ). แแ แแฃ แแแญแแ แแแแ "แแแแแ แแแ" แแ แแ แแแแแ แแขแฃแแ แขแ แแแแ แ?
แแก แแแแแแฎแแแ แแแ
แแแคแแ แแแแแแก แแแ แแแแขแ แแแแก แกแแฎแแแแแ แแฌแแ แแแ แจแแแแแแแแแ แแ: แแแคแแ แแแแแแก แกแแฎแแแ, แฌแแ แขแแแ แแ แจแแแแแ แแแแแ แแแ แแแแขแ แแก แกแแฎแแแ, SQL-แจแ แกแ แฃแแแ แแแแแแคแแชแแฃแ แ แแแแแฅแขแแแแก แกแแฎแแแแแแก แแกแแแแกแ. แแแแแแแแแ: plpgsql.variable_conflict.
แแแแแแแแ แแ แแกแแกแขแแแฃแ แ แแแ แแแแขแแแแก แแแงแแแแแ แจแแกแแซแแแแแแแ แแ แแชแแกแแแจแ, แ แแแแแแแช แแ แแขแแแ แแแแ แจแแกแแแแแแกแ แแแคแแ แแแแแแก แแแแฃแแ, PostgreSQL แแฆแแแก แแแแจแแแแแแแแแ แแแแแกแแแแ แ แกแแฎแแแแกแแแแก แแ แ แแแแแแแแแขแแ.
แฏแแ แฉแแแ แแแชแแแแ แขแ แแแแ แก, แแแแฎแแแแแแ แแกแ:
BEGIN
-- ะฟัะพัะตััั ะบะพะฝะฒะตััะฐัะธะธ ะผะพะถะฝะพ ะดะตะปะฐัั ะฒัะต
IF current_setting('mycfg.my_table_convert_process') = 'TRUE' THEN
IF TG_OP IN ('INSERT', 'UPDATE') THEN
RETURN NEW;
ELSE
RETURN OLD;
END IF;
END IF;
...
แกแฎแแแแ แจแแ แแก, แแก แจแแแซแแแแ แแแแแแแแก "แแแแแแแก แแแแแแ", แแแแแแแแแก แแแ แแจแ, แแแจแแแแแแ CREATE OR REPLACE
แขแ แแแแ แแก แคแฃแแฅแชแแแกแแแแก. แแ แจแแแแแ แกแแแชแแแแฃแ แแแแจแแ แจแ แฉแแแ แแแแแแ แแแ "แฉแแแแก" แชแแแแแก:
SET mycfg.my_table_convert_process = 'TRUE';
UPDATE ...;
SET mycfg.my_table_convert_process = ''; -- ะฒะตัะฝัะปะธ ะฒ ะธัั
ะพะดะฝะพะต ัะพััะพัะฝะธะต
แกแฎแแ แแแแแ แแชแแ? แแแแแแแ แแ แแแแแแขแแ แแแจแ.
แฌแงแแ แ: www.habr.com