แแทแแแผแแแทแแแถแแ แแแปแแแแแถแ แแแพแแแแแผแแแแแแแแปแแแนแแแแแแผแแแถแแแพแแแแธแแแแแแแผแแขแแแธแแฝแแแ แแแแปแแแแแแแแแแถแแถแแถแแ แแแแปแโแแถแโแแฝแ แ แพแ แแทแแแแแ - แแถแแถแแถแแแแแแพแแแถแแแปแแแแแพแแถแ แแแแแแแแแแแปแแแนแแแทแแถแแขแแแธแแทแแแแแถแแแธแแธแแแแแถแแแแแพแแ แแ แปแแแแแแแแถแแแแแ - แขแแแธแแแ.
แแถแงแแถแ แแแ แแ
แแพแแปแแแแขแแแแแแแผแแแถแแแแแแแแผแแขแแแธแแฝแ แแถแแแแแขแถแแแแแ 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- แแแแแแแแแแแแแแนแแแแแผแแแถแแแทแ, แแถแแแแแถแแแแแแผแแแถแแฝแแแนแ "แ แแแ แพแแแแ" แแ แแแแปแแแป แแทแแแแแแแแแแพแแแแ แ แพแแแถแแนแแแทแแ แผแแแ แแแแปแแแแแฟแแแ แแแแแธแแถแแถแแฝแแแแแแแ แแแแ แถ!
แแถแแแแแแแแแแแขแแแแแแแ
แแผแ แแแแแแ แแแแปแแแแแแแปแ แแพแแแถแแแแแแแถแแแ แแแปแ แแถแแผแแแแแถแแแฝแ - แแพแแแแแผแแแแแแแแแแแแนแแแพแแแแธแแแแแถแแแแถแแแแแถแแแแแแผแ "แแแแแแพแ" แแ แแแแปแแแถแแถแแแธ "แแทแแแแแแแแแแพแ" แ "แแแแแแพแ" แแแแผแแแถแแแแแแแผแ แแธแแปแ แ แพแ "แแทแแแแแแถแแแแแแพแ" แแแแผแแแถแแแแแแกแพแแ แแแแแถแแแแถแแแแแขแแแแขแถแ แแแแพ .
session_replication_role
แขแถแ :
แแแแแแถแแแแแแแแแแแแแแแถแแแแแแขแแแแแแแแแแ แแถแแแแแแแแแแแแแแ . แแ แแแแแพแแแแแพแแแถแแแแแแแแถแแแถแแแแแถแแแแแแแ (แแแแถแแแพแ) แแแแแนแแ แถแแแแแแพแแแ แแแแแแแแฝแแถแแธแ แแแแแแบ "แแแแแแแพแ" (แแแแถแแแพแ) แฌ "แแผแแแแแถแ" แ แแแแแแแผแแแถแแแพแแแแแแถแแแแแถแ
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
