PostgreSQL āĻ…ā§āϝāĻžāĻ¨ā§āϟāĻŋāĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϏ: āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻŦāĻžāχāĻĒāĻžāϏ āĻ•āϰ⧇ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ

āφāϜ āĻšā§‹āĻ• āĻŦāĻž āĻ•āĻžāϞ āĻšā§‹āĻ•, āĻ…āύ⧇āĻ•āϕ⧇āχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻāĻ¨ā§āĻŸā§āϰāĻŋāϗ⧁āϞ⧋āϤ⧇ āĻŦā§āϝāĻžāĻĒāĻ• āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāϤ⧇ āĻšāϝāĻŧāĨ¤ āφāĻŽāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧇āĻ›āĻŋāϞ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āφāϰāĻ“ āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇āĻ­āĻžāĻŦ⧇ āύāĻž āĻ•āϰāĻžāχ āĻ­āĻžāϞ⧋āĨ¤ āφāϜ āφāĻŽāĻŋ āĻ—āĻŖ āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĻāĻŋāĻ•āϟāĻŋ āύāĻŋāϝāĻŧ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻŦ— āĻŸā§āϰāĻŋāĻ—āĻžāϰāĻŋāĻ‚ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇.

āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āωāĻĒāϰ āĻāĻ•āϟāĻŋ āĻ•ā§āώāϤāĻŋāĻ•āϰ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻā§āϞāϛ⧇, āϝ⧇āϟāĻŋāϤ⧇ āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋāϛ⧁ āĻāĻ•āϟāĻž āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ 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

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster