เจเจฒเจฆเฉ เจเจพเจ เจฌเจพเจ
เจฆ เจตเจฟเฉฑเจ, เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฒเฉเจเจพเจ เจจเฉเฉฐ เจธเจพเจฐเจฃเฉ เจฆเฉ เจฐเจฟเจเจพเจฐเจกเจพเจ เจตเจฟเฉฑเจ เจตเฉฑเจกเฉ เจชเฉฑเจงเจฐ 'เจคเฉ เจเฉเจ เจ เฉเจ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจจเจพ เจชเฉเจเจฆเจพ เจนเฉเฅค เจฎเฉเจฐเฉ เจเฉเจฒ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจนเฉ
เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉฑเจ เจเฉเจฌเจฒ เจคเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจ เจ เฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจเฉฑเจ เจฌเฉเจฐเจพเจ เจเจฐเจฟเฉฑเจเจฐ เจฒเจเจเจฆเจพ เจนเฉ ON UPDATE
, เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจเฉเจ เจธเจฎเฉเฉฑเจเฉเจเจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเจฐเจจเจพเฅค เจ
เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจ
เฉฑเจชเจกเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ, เจเฉฑเจ เจจเจตเจพเจ เจเฉเจคเจฐ เจธเจผเฉเจฐเฉ เจเจฐเฉ) เจเฉฐเจจเฉ เจงเจฟเจเจจ เจจเจพเจฒ เจเจฟ เจเจน เจธเจฎเฉเจน เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจพ เจนเฉเจฃเฅค
เจเจฒเฉ เจฌเฉฑเจธ เจเจฐเจฟเจเจฐเจพเจ เจจเฉเฉฐ เจ เจธเจฎเจฐเฉฑเจฅ เจเจฐเฉเจ!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
UPDATE ...; -- ััั ะดะพะปะณะพ-ะดะพะปะณะพ
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
เจ เจธเจฒ เจตเจฟเฉฑเจ, เจเจน เจธเจญ เจนเฉ - เจธเจญ เจเฉเจ เจฒเจเจ เจฐเจฟเจนเจพ เจนเฉ.
เจเจฟเจเจเจเจฟ ALTER TABLE
เจฒเจเจพเจเจเจฆเจพ เจนเฉ เจเจเจธเจเจฒเฉเจธเจฟเจต- เจเฉฑเจ เจคเจพเจฒเจพ เจเจฟเจธ เจฆเฉ เจนเฉเจ เจพเจ เจเฉเจ เจตเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจจเจนเฉเจ เจเฉฑเจฒ เจฐเจฟเจนเจพ, เจเฉฑเจฅเฉเจ เจคเฉฑเจ เจเจฟ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจตเฉ 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