āĻŦāĻĄāĻŧ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ° āĻāĻāĻŋāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ (āĻāĻŋāĻ¨ā§āĻ¨
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻžāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻļā§āĻ¨āĻžāĻ¯āĻŧ: "āĻāĻāĻžāĻ¨ā§āĻ
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻāĻ¨ āĻāĻ "āĻāĻŋāĻā§" āĻāĻ° āĻāĻ˛āĻŋāĻāĻŽ āĻļāĻ¤ āĻļāĻ¤ āĻŽā§āĻāĻžāĻŦāĻžāĻāĻā§ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋāĻā§ āĻ
āĻŦāĻļā§āĻ¯āĻ 24x7 āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¤āĻāĻ¨ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĒāĻžāĻ°ā§āĻļā§āĻŦ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻāĻž āĻĻā§āĻ¯āĻŧ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻŦāĻ¨āĻā§ āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°āĻŦā§āĨ¤
PostgreSQL āĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻāĻžāĻŦāĻŋāĻ˛āĻž āĻāĻ°āĻ¤ā§ (āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŋāĻ¤ā§ āĻ¨āĻ¯āĻŧ), āĻāĻĒāĻ¨āĻŋ āĻāĻŋāĻā§ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻāĻŽ āĻ¸āĻŽā§āĻĒāĻĻ āĻāĻ°āĻ āĻ¸āĻš āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§āĨ¤
1. āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻžāĻšāĻžāĻ?
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ āĻ¯ā§ āĻāĻŽāĻ°āĻž "āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž" āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¸ā§āĻ āĻĄā§āĻāĻž āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋā§ˇ
1.1āĨ¤ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ (āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛)
āĻ¨ā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§, PostgreSQL-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻ¸āĻžāĻ°āĻŖāĻŋ āĻ āĻ¨ā§āĻ¯ āĻ¯ā§ āĻā§āĻ¨ā§āĻāĻŋāĻ° āĻŽāĻ¤ā§āĻāĨ¤ āĻ¤āĻžāĻ āĻā§āĻ¸āĻāĻ¸ā§āĻāĻžāĻ° āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§ "āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¯āĻž āĻāĻŋāĻā§ āĻāĻā§ āĻ¤āĻž āĻā§āĻŦāĻ˛ āĻ¸ā§āĻŽā§āĻ¤āĻŋāĻ¤ā§ āĻ¸āĻā§āĻāĻŋāĻ¤, āĻāĻŦāĻ āĻāĻāĻŋ āĻļā§āĻˇ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§". āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ "āĻ¨ā§āĻŽāĻ¸ā§āĻĒā§āĻ¸"
āĻ¯āĻĻāĻŋ āĻĻā§āĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ CREATE TABLE x
, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĒāĻžāĻŦā§ āĻ
-āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ¤āĻž āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦāĻ¸ā§āĻ¤ā§āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¯āĻŧ āĻā§āĻˇā§āĻāĻž āĻ¯āĻĻāĻŋ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻ¤ā§ CREATE TEMPORARY TABLE x
, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻ¯āĻŧāĻ āĻāĻāĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻāĻ°āĻŦā§, āĻāĻŦāĻ āĻ¸āĻŦāĻžāĻ āĻĒāĻžāĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻĒāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋāĻā§ āĻŽāĻŋāĻ˛ āĻĨāĻžāĻāĻŦā§ āĻ¨āĻžāĨ¤
āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ "āĻāĻ¤ā§āĻŽ-āĻ§ā§āĻŦāĻāĻ¸"
āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ
āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ DROP TABLE x
āĻāĻžāĻĄāĻŧāĻž āĻā§āĻ¨ āĻ˛āĻžāĻ āĻ¨ā§āĻ...
āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻžāĻ āĻāĻ°āĻā§āĻ¨ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻŽā§āĻĄā§ pgbouncer, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĨāĻžāĻā§ āĻ¯ā§ āĻāĻ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻāĻāĻ¨āĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ, āĻāĻŦāĻ āĻāĻāĻŋāĻ¤ā§ āĻāĻ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻāĻāĻ¨āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨āĨ¤
āĻ¤āĻžāĻ, āĻĒāĻŋāĻāĻŋāĻŦāĻžāĻāĻ¨ā§āĻ¸āĻžāĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻ¸āĻāĻ¯ā§āĻ āĻĨā§āĻā§ āĻāĻāĻŋ āĻāĻŦāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ˛ā§ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĻā§āĻāĻž āĻĻā§āĻŦā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻžāĻ§āĻž āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ CREATE TEMPORARY TABLE IF NOT EXISTS x
.
āĻ¸āĻ¤ā§āĻ¯, āĻ¯āĻžāĻāĻšā§āĻ āĻāĻāĻŋ āĻ¨āĻž āĻāĻ°āĻžāĻ āĻāĻžāĻ˛, āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ "āĻāĻā§āĻ° āĻŽāĻžāĻ˛āĻŋāĻ" āĻĨā§āĻā§ āĻ
āĻŦāĻļāĻŋāĻˇā§āĻ āĻĄā§āĻāĻž "āĻšāĻ āĻžā§" āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻāĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻ
āĻ¨ā§āĻ āĻāĻžāĻ˛ ON COMMIT DROP
- āĻ
āĻ°ā§āĻĨāĻžā§, āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻšāĻ˛ā§, āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻŽā§āĻā§ āĻ¯āĻžāĻŦā§āĨ¤
āĻ -āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ
āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻāĻ¤, āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻĄā§āĻāĻžāĻ° āĻĄāĻŦāĻ˛ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻāĻ¯āĻŧā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĻā§āĻ° āĻāĻ°ā§ āĻšāĻŋāĻĒ + āĻāĻ¯āĻŧāĻžāĻ˛-āĻ, āĻ¤āĻžāĻ āĻāĻ¤ā§ āĻĸā§āĻāĻžāĻ¨/āĻāĻĒāĻĄā§āĻ/āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻĻā§āĻ°ā§āĻ¤āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ "āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ" āĻā§āĻŦāĻŋāĻ˛, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻĒāĻžāĻ¤āĻ¤, āĻ¯āĻĻāĻŋāĻ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒā§āĻ¯āĻžāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻāĻĻāĻŋāĻ¨ āĻ§āĻ°ā§ āĻĒā§āĻ°āĻāĻžāĻ°āĻŋāĻ¤ āĻšāĻā§āĻā§āĨ¤
1.2āĨ¤ āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŋ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻŋāĻā§ āĻāĻˇā§āĻāĻāĻ° ETL āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĨāĻžāĻā§ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻ¨āĻ āĻāĻā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻŽā§āĻĄā§ pgbouncer? ..
āĻŦāĻž āĻĄā§āĻāĻž āĻĒā§āĻ°āĻŦāĻžāĻš āĻāĻ¤ āĻŦāĻĄāĻŧ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄāĻāĻāĻĨ āĻ¨ā§āĻ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ (āĻĒāĻĄāĻŧā§āĻ¨, āĻ¸āĻŋāĻĒāĻŋāĻāĻ āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž)? ..
āĻ¨āĻžāĻāĻŋ āĻāĻŋāĻā§ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ˛āĻā§ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸āĻāĻžāĻŦā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻāĻ¯ā§āĻā§? ..
āĻāĻāĻžāĻ¨ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻā§ - āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨. āĻĒā§āĻ¨, āĻšā§āĻ¯āĻžāĻāĨ¤ āĻāĻāĻžāĻ:
- āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻāĻ˛ā§āĻŽā§āĻ˛ā§ āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ "āĻāĻŽāĻžāĻ° āĻ¨āĻŋāĻā§āĻ°" āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻžāĻ°āĻ āĻ¸āĻžāĻĨā§ āĻā§āĻĻ āĻ¨āĻž āĻšāĻ¯āĻŧ
- āĻ¨āĻŋāĻ°ā§āĻ¯āĻžāĻ¸: āĻāĻāĻāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§āĻŖ
- āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°: āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤, āĻā§ āĻ˛āĻŋāĻā§āĻāĻŋāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
- āĻŦā§āĻāĻž: āĻāĻžāĻ°ā§āĻā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĸā§āĻ˛ā§
- "āĻāĻŽāĻžāĻ°" āĻā§āĻŦāĻŋāĻ˛ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻāĻŦāĻ āĻāĻāĻ¨ - āĻŽāĻ˛āĻŽ āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻāĻŋāĨ¤ āĻāĻ¸āĻ˛ā§, PostgreSQL āĻ āĻ¸āĻŦ āĻ˛ā§āĻāĻž āĻĻā§āĻŦāĻžāĻ° āĻšāĻ¯āĻŧ - COMMIT
'āĻŦāĻžāĻĻāĻžāĻŽ āĻāĻŦāĻ ROLLBACK
'āĻ¨āĻžāĻ˛ āĻ˛ā§āĻ¨āĻĻā§āĻ¨āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ! āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻā§ āĻšāĻ¯āĻŧ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻ¸āĻĢāĻ˛ āĻāĻŋāĻ˛ āĻŦāĻž āĻāĻāĻŋ āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤. āĻāĻ¤āĻā§āĻ˛āĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻšāĻŦā§ āĻ¤āĻž āĻŦāĻŋāĻŦā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ - āĻāĻŽāĻ°āĻž "āĻŽāĻžāĻ āĻĨā§āĻā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§" āĻāĻā§āĻ°āĻšā§ āĻ¨āĻ, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻāĻŋ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻŋāĻ˛ āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¨āĻ¯āĻŧāĨ¤
āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, PostgreSQL āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž, 9.1 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§, āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻā§
āĻāĻ āĻāĻā§āĻāĻŋāĻ¤ āĻĻāĻŋāĻ¯āĻŧā§, āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻāĻ¨āĻ˛āĻāĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§ āĻ˛ā§āĻāĻž āĻĄā§āĻāĻž āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻžāĻŽāĻ¨ā§āĻ° āĻ˛āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž (āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ 29 āĻĻā§āĻā§āĻ¨), āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻā§āĻ° āĻā§āĻ¯āĻŧā§ āĻ āĻ¨ā§āĻ āĻĻā§āĻ°ā§āĻ¤ āĻāĻžāĻ āĻāĻ°ā§āĻ¨. āĻ¯āĻžāĻāĻšā§āĻ, āĻ¤āĻžāĻ°āĻž āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻĨā§āĻā§ āĻ āĻ¨āĻžāĻā§āĻ°āĻŽā§āĻ¯ āĻ¨āĻ¯āĻŧ; āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻŦāĻž āĻāĻ°ā§āĻ°ā§ āĻļāĻžāĻāĻĄāĻžāĻāĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻāĻŋ āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻžāĻāĻž. āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž āĻ¸ā§āĻ˛ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¨ā§ āĻ¸ā§āĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻ¨āĻ˛āĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻāĻāĻž āĻ āĻ¨ā§āĻ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻŦā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° "āĻĒāĻĄāĻŧā§", āĻāĻāĻŋ āĻ āĻĒā§āĻ°ā§āĻ¤āĻŋāĻāĻ° āĻšāĻŦā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ¤ āĻāĻ¨ āĻāĻ¨ āĻāĻāĻŋ āĻāĻā§, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° ETL āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŋ āĻāĻžāĻ¨ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§ "āĻĒā§āĻ¨āĻ°ā§āĻā§āĻā§āĻŦāĻŋāĻ¤" āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ "āĻŽāĻžāĻ āĻĨā§āĻā§" āĻāĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ?...
āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻāĻĒāĻ°ā§āĻ° āĻā§āĻ¸ āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¤āĻ, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ UNLOGGED
āĻāĻāĻ¨ā§ āĻ āĻ¨āĻšā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž, āĻ¯ā§ āĻ¤āĻĨā§āĻ¯ āĻĨā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ.
1.3āĨ¤ āĻāĻŽāĻŋāĻ āĻāĻ°ā§āĻ¨ { āĻ¸āĻžāĻ°āĻŋ āĻŽā§āĻā§āĻ¨ | āĻĄā§āĻ°āĻĒ}
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ˛ā§ āĻāĻ āĻāĻ āĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ°āĻŖ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻĒāĻ° ON COMMIT DROP
āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻ°ā§ āĻ˛āĻŋāĻā§āĻāĻŋ, āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ DROP TABLE
, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻā§āĻā§ ON COMMIT DELETE ROWS
āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻ°āĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ - āĻāĻāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ TRUNCATE TABLE
.
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽā§āĻāĻž-āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ¤ā§āĻ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻĢāĻ˛ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻā§āĻ°ā§āĻ¤āĻ° "āĻĢā§āĻ˛āĻž" āĻšāĻ¯āĻŧ pg_class, pg_attribute, pg_attrdef, pg_depend,âĻ
āĻāĻāĻ¨ āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻāĻ¯ā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻ¨ āĻāĻ°ā§āĻŽā§ āĻāĻā§, āĻ¯ā§āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻā§āĻ˛ā§, āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻĒā§āĻ°āĻŖ āĻāĻ°ā§, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻŽā§āĻā§ āĻĻā§āĻ¯āĻŧ... āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻāĻŽā§ āĻĨāĻžāĻāĻŦā§, āĻāĻŦāĻ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻŦā§āĻ°ā§āĻ āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°āĻŦā§āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž! āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻāĻŋ āĻ
āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° CREATE TEMPORARY TABLE x ... ON COMMIT DELETE ROWS
āĻāĻāĻŋāĻā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻāĻā§āĻ°ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¨ - āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻāĻŦā§ (āĻāĻāĻāĻŋ āĻāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ CREATE
), āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻžāĻ˛āĻŋ āĻšāĻŦā§, āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ TRUNCATE
āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ (āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻ° āĻāĻ˛āĻ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ)āĨ¤
1.4āĨ¤ āĻ˛āĻžāĻāĻ...āĻ¸āĻš...
āĻāĻŽāĻŋ āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻāĻŋ āĻ¯ā§ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§āĻ° āĻāĻŽāĻĻāĻžāĻ¨āĻŋ - āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻā§āĻ˛āĻžāĻ¨ā§āĻ¤āĻāĻžāĻŦā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻāĻŋ āĻ¤āĻžāĻ° āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻˇāĻŖāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻŋ-āĻĒā§āĻ¸ā§āĻ āĻāĻ°ā§...
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻ˛āĻ¸āĻ¤āĻžāĻ āĻāĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻāĻā§āĻāĻŋāĻ¨! āĻāĻ āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ "āĻ¨āĻŽā§āĻ¨āĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§" āĻāĻāĻž āĻ āĻ¨ā§āĻ āĻ¸āĻšāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§:
CREATE TEMPORARY TABLE import_table(
LIKE target_table
);
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻĒā§āĻ°āĻā§āĻ° āĻĄā§āĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻāĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻāĻāĻ¨āĻ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻāĻāĻāĻŋ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻā§ - āĻ¸ā§āĻāĻ! āĻāĻŦāĻ āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸ā§āĻā§āĻ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§.
āĻ¯ā§āĻšā§āĻ¤ā§, āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ, āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸ā§āĻāĻāĻā§āĻ˛āĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ LIKE target_table INCLUDING INDEXES
.
āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ°āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ DEFAULT
-values ââ(āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§), āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ LIKE target_table INCLUDING DEFAULTS
. āĻ
āĻĨāĻŦāĻž āĻ¸āĻšāĻāĻāĻžāĻŦā§ - LIKE target_table INCLUDING ALL
â āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻ, āĻ¸ā§āĻā§, āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž,...
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻ¸ā§āĻā§ āĻ¸āĻš āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸āĻžāĻ°āĻŖāĻŋ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄā§āĻāĻž āĻ˛ā§āĻĄ āĻšāĻ¤ā§ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻāĻŦā§āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨, āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¸ā§āĻā§āĻā§āĻ˛āĻŋ āĻ°ā§āĻ˛ āĻāĻĒ āĻāĻ°ā§āĻ¨ - āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻ°ā§ āĻ¤āĻž āĻĻā§āĻā§āĻ¨
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§
2. āĻāĻŋāĻāĻžāĻŦā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻ¯āĻŧ?
āĻāĻŽāĻžāĻā§ āĻļā§āĻ§ā§ āĻŦāĻ˛āĻ¤ā§ āĻĻāĻŋāĻ¨ - āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨
- "āĻĒā§āĻ¯āĻžāĻ" āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻŦāĻžāĻš INSERT
,
3. āĻāĻŋāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž?
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽāĻŋāĻāĻžāĻāĻŋ āĻāĻāĻ°āĻāĻŽ āĻĻā§āĻāĻ¤ā§ āĻĻāĻŋāĻ¨:
- āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĄā§āĻāĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ 1M āĻ°ā§āĻāĻ°ā§āĻĄ
- āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻāĻāĻāĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ "āĻāĻŋāĻ¤ā§āĻ°"
- āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻĨā§āĻā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻžāĻ¨ā§āĻ¨ āĻ¯ā§ 10K āĻāĻ° āĻŦā§āĻļāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ
3.1āĨ¤ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ
āĻ¸āĻ°āĻ˛āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĄā§āĻāĻž āĻĒā§āĻ¨āĻ°ā§āĻāĻ āĻ¨ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ - āĻā§āĻŦāĻ˛ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋāĻā§ āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻāĻāĻžāĻ°ā§ āĻāĻ¨ā§āĻ¨, āĻāĻāĻŋ āĻšāĻ˛:
- āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¯āĻž āĻāĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§āĻ
- āĻšāĻžāĻ˛āĻ¨āĻžāĻāĻžāĻĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¸āĻŦāĻāĻŋāĻā§
- āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻž āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻāĻā§āĻ¨āĻŋ
āĻā§āĻ¨ āĻāĻ āĻā§āĻ°āĻŽā§ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤? āĻāĻžāĻ°āĻŖ āĻāĻāĻāĻžāĻŦā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻŦā§ (
dst āĻĨā§āĻā§ āĻŽā§āĻā§āĻ¨
āĻ¨āĻž, āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻĒāĻ¨āĻŋ āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
- āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ (
DELETE
) āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻ¸āĻŦāĻāĻŋāĻā§ - āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻāĻŽā§āĻ āĻĨā§āĻā§ āĻ¸āĻŦ
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ āĻ¸āĻžāĻĨā§, MVCC āĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻžāĻ° āĻ āĻŋāĻ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻŦā§! 1K āĻāĻĒāĻĄā§āĻā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻ¸āĻžāĻ°āĻŖā§āĻ¤ā§ āĻ°ā§āĻāĻ°ā§āĻĄā§āĻ° +10M āĻāĻŦāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻā§āĻŦāĻ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ...
āĻā§āĻ°āĻžāĻā§āĻā§āĻ dst
āĻāĻāĻāĻ¨ āĻāĻ°āĻ āĻ āĻāĻŋāĻā§āĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻžāĻ¨ā§āĻ¨ āĻ¯ā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻā§āĻ¯āĻžāĻŦāĻ˛ā§āĻāĻāĻŋ āĻŦā§āĻļ āĻ¸āĻ¸ā§āĻ¤āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻž (
TRUNCATE
) āĻĒā§āĻ°ā§ āĻā§āĻŦāĻŋāĻ˛ - āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻāĻŽā§āĻ āĻĨā§āĻā§ āĻ¸āĻŦ
āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°,
āĻ¯āĻžāĻ° āĻ āĻ°ā§āĻĨ:
- āĻāĻŽāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻāĻŋ āĻĻā§āĻ°ā§āĻāĻŽā§āĻ¯āĻŧāĻžāĻĻā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨
TRUNCATE
āĻāĻ°ā§āĻĒ āĻāĻ°ā§ āĻāĻā§āĻ¸āĻā§āĻ˛ā§āĻ¸āĻŋāĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸-āĻ āĻŦāĻ°ā§āĻ§- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻ¨āĻž, āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯ āĻ¸āĻŦāĻžāĻ āĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻŽāĻ¨āĻāĻŋ āĻĒāĻžāĻ°ā§ āĻ¨āĻž
SELECT
āĻāĻŋāĻā§ āĻāĻžāĻ˛ā§ āĻ¯āĻžāĻā§āĻā§ āĻ¨āĻž...
āĻ¸āĻžāĻ°āĻŖā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨... āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¨... / āĻ¸āĻžāĻ°āĻŖā§ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¨...
āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻĒā§āĻ°āĻžāĻ¨ā§āĻāĻŋāĻ° āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻāĻāĻŋāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĨ¤ āĻāĻŋāĻā§ āĻŦāĻžāĻā§ āĻā§āĻ āĻāĻŋāĻ¨āĻŋāĻ¸:
- āĻāĻāĻ¨āĻ āĻā§āĻŦ āĻāĻā§āĻ¸āĻā§āĻ˛ā§āĻ¸āĻŋāĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸, āĻ¯āĻĻāĻŋāĻ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻāĻŽ āĻ¸āĻŽāĻ¯āĻŧ
- āĻāĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨/āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨ āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§,
ANALYZE āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§ - āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻĻā§āĻļā§ āĻā§āĻā§āĻ˛āĻŋ āĻā§āĻā§ āĻā§āĻā§ (FK) āĻā§āĻŦāĻŋāĻ˛ā§
āĻ¸āĻžāĻāĻŽāĻ¨ āĻ°āĻŋāĻāĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻžāĻŦā§āĻ˛ā§āĻāĻāĻĒāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻāĻŋāĻ˛ āĻ¯āĻž āĻ¤ā§āĻ°āĻŋāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛ ALTER
-āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ FK āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¨āĻž āĻāĻ°ā§ āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻ¤āĻ°ā§ āĻā§āĻŦāĻŋāĻ˛ āĻŦāĻĄāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ°āĻžāĻŽ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°ā§āĻ¨āĻŋāĨ¤
āĻŽā§āĻā§āĻ¨, āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§āĻ¨, āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°ā§āĻ¨
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ -āĻŦā§āĻ˛āĻāĻŋāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§ āĻŽā§āĻŽāĻžāĻāĻ¸āĻž āĻāĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¤āĻŋāĻ¨... āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°āĻāĻžāĻŦā§ āĻāĻ°āĻŦā§āĻ¨?
-- вŅĐĩ Đ´ĐĩĐģĐ°ĐĩĐŧ в ŅĐ°ĐŧĐēĐ°Ņ
ŅŅĐ°ĐŊСаĐēŅии, ŅŅОйŅ ĐŊиĐēŅĐž ĐŊĐĩ видĐĩĐģ "ĐŋŅĐžĐŧĐĩĐļŅŅĐžŅĐŊŅŅ
" ŅĐžŅŅĐžŅĐŊиК
BEGIN;
-- ŅОСдаĐĩĐŧ вŅĐĩĐŧĐĩĐŊĐŊŅŅ ŅĐ°ĐąĐģиŅŅ Ņ иĐŧĐŋĐžŅŅиŅŅĐĩĐŧŅĐŧи Đ´Đ°ĐŊĐŊŅĐŧи
CREATE TEMPORARY TABLE tmp(
LIKE dst INCLUDING INDEXES -- ĐŋĐž ОйŅаСŅ и ĐŋОдОйиŅ, вĐŧĐĩŅŅĐĩ Ņ иĐŊĐ´ĐĩĐēŅĐ°Đŧи
) ON COMMIT DROP; -- Са ŅĐ°ĐŧĐēĐ°Đŧи ŅŅĐ°ĐŊСаĐēŅии ĐžĐŊĐ° ĐŊĐ°Đŧ ĐŊĐĩ ĐŊŅĐļĐŊĐ°
-- ĐąŅŅŅŅĐž-ĐąŅŅŅŅĐž вĐģиваĐĩĐŧ ĐŊОвŅĐš ОйŅаС ŅĐĩŅĐĩС COPY
COPY tmp FROM STDIN;
-- ...
-- .
-- ŅĐ´Đ°ĐģŅĐĩĐŧ ĐžŅŅŅŅŅŅвŅŅŅиĐĩ
DELETE FROM
dst D
USING
dst X
LEFT JOIN
tmp Y
USING(pk1, pk2) -- ĐŋĐžĐģŅ ĐŋĐĩŅвиŅĐŊĐžĐŗĐž ĐēĐģŅŅĐ°
WHERE
(D.pk1, D.pk2) = (X.pk1, X.pk2) AND
Y IS NOT DISTINCT FROM NULL; -- "Đ°ĐŊŅидĐļОКĐŊ"
-- ОйĐŊОвĐģŅĐĩĐŧ ĐžŅŅавŅиĐĩŅŅ
UPDATE
dst D
SET
(f1, f2, f3) = (T.f1, T.f2, T.f3)
FROM
tmp T
WHERE
(D.pk1, D.pk2) = (T.pk1, T.pk2) AND
(D.f1, D.f2, D.f3) IS DISTINCT FROM (T.f1, T.f2, T.f3); -- ĐŊĐĩСаŅĐĩĐŧ ОйĐŊОвĐģŅŅŅ ŅОвĐŋĐ°Đ´Đ°ŅŅиĐĩ
-- вŅŅавĐģŅĐĩĐŧ ĐžŅŅŅŅŅŅвŅŅŅиĐĩ
INSERT INTO
dst
SELECT
T.*
FROM
tmp T
LEFT JOIN
dst D
USING(pk1, pk2)
WHERE
D IS NOT DISTINCT FROM NULL;
COMMIT;
3.2āĨ¤ āĻĒā§āĻ¸ā§āĻ-āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°ā§āĻ¨
āĻāĻāĻ KLADR-āĻ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤āĻāĻžāĻŦā§ āĻĒā§āĻ¸ā§āĻ-āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻāĻŋāĻ¤ - āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻ°āĻž, āĻā§āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻž, āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¨ā§āĻ¨ - āĻ āĻŋāĻ āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻā§āĻĄ āĻāĻāĻŋāĻ˛ āĻ¨āĻž āĻāĻ°ā§, āĻāĻĻāĻ°ā§āĻļāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¨āĻž āĻāĻ°ā§?
āĻ¯āĻĻāĻŋ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ˛ā§āĻāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŦā§:
-- ŅĐĩĐģĐĩвŅĐĩ ŅĐ°ĐąĐģиŅŅ
CREATE TABLE kladr(...);
CREATE TABLE kladr_house(...);
-- ŅĐ°ĐąĐģиŅŅ Ņ иŅŅĐžŅиĐĩĐš иСĐŧĐĩĐŊĐĩĐŊиК
CREATE TABLE kladr$log(
ro kladr, -- ŅŅŅ ĐģĐĩĐļĐ°Ņ ŅĐĩĐģŅĐĩ ОйŅаСŅ СаĐŋиŅĐĩĐš ŅŅĐ°ŅОК/ĐŊОвОК
rn kladr
);
CREATE TABLE kladr_house$log(
ro kladr_house,
rn kladr_house
);
-- ОйŅĐ°Ņ ŅŅĐŊĐēŅиŅ ĐģĐžĐŗиŅОваĐŊиŅ иСĐŧĐĩĐŊĐĩĐŊиК
CREATE OR REPLACE FUNCTION diff$log() RETURNS trigger AS $$
DECLARE
dst varchar = TG_TABLE_NAME || '$log';
stmt text = '';
BEGIN
-- ĐŋŅОвĐĩŅŅĐĩĐŧ ĐŊĐĩОйŅ
ОдиĐŧĐžŅŅŅ ĐģĐžĐŗĐŗиŅОваĐŊиŅ ĐŋŅи ОйĐŊОвĐģĐĩĐŊии СаĐŋиŅи
IF TG_OP = 'UPDATE' THEN
IF NEW IS NOT DISTINCT FROM OLD THEN
RETURN NEW;
END IF;
END IF;
-- ŅОСдаĐĩĐŧ СаĐŋиŅŅ ĐģĐžĐŗĐ°
stmt = 'INSERT INTO ' || dst::text || '(ro,rn)VALUES(';
CASE TG_OP
WHEN 'INSERT' THEN
EXECUTE stmt || 'NULL,$1)' USING NEW;
WHEN 'UPDATE' THEN
EXECUTE stmt || '$1,$2)' USING OLD, NEW;
WHEN 'DELETE' THEN
EXECUTE stmt || '$1,NULL)' USING OLD;
END CASE;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ (āĻ
āĻĨāĻŦāĻž āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ ALTER TABLE ... ENABLE TRIGGER ...
):
CREATE TRIGGER log
AFTER INSERT OR UPDATE OR DELETE
ON kladr
FOR EACH ROW
EXECUTE PROCEDURE diff$log();
CREATE TRIGGER log
AFTER INSERT OR UPDATE OR DELETE
ON kladr_house
FOR EACH ROW
EXECUTE PROCEDURE diff$log();
āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻļāĻžāĻ¨ā§āĻ¤āĻāĻžāĻŦā§ āĻ˛āĻ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦā§āĻ° āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻāĨ¤
3.3āĨ¤ āĻ˛āĻŋāĻā§āĻāĻ¯ā§āĻā§āĻ¤ āĻ¸ā§āĻ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻāĻŋ āĻ¯āĻāĻ¨ āĻā§āĻ¸ āĻāĻŦāĻ āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§āĻ° āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻāĻāĻāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĨā§āĻā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸ā§āĻā§āĻ°ā§āĻ āĻāĻžāĻ āĻžāĻŽā§ āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ?
āĻāĻ¸ā§āĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻā§āĻ° āĻ¸ā§āĻā§āĻ°ā§āĻ, āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ "āĻ āĻ¨ā§āĻ āĻĨā§āĻā§ āĻāĻ" āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ:
CREATE TABLE client(
client_id
serial
PRIMARY KEY
, inn
varchar
UNIQUE
, name
varchar
);
CREATE TABLE invoice(
invoice_id
serial
PRIMARY KEY
, client_id
integer
REFERENCES client(client_id)
, number
varchar
, dt
date
, sum
numeric(32,2)
);
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ "āĻ¸āĻŦ āĻāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§" āĻāĻāĻžāĻ°ā§ āĻāĻ¸ā§:
CREATE TEMPORARY TABLE invoice_import(
client_inn
varchar
, client_name
varchar
, invoice_number
varchar
, invoice_dt
date
, invoice_sum
numeric(32,2)
);
āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻā§āĻ°āĻžāĻšāĻā§āĻ° āĻĄā§āĻāĻž āĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ¸āĻĻā§āĻļ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄ āĻšāĻ˛ "āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ":
0123456789;ĐĐ°ŅŅ;A-01;2020-03-16;1000.00
9876543210;ĐĐĩŅŅ;A-02;2020-03-16;666.00
0123456789;ĐĐ°ŅŅ;B-03;2020-03-16;9999.00
āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĄā§āĻāĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻŦ, āĻ¤āĻŦā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ - COPY
āĻāĻ°ā§ āĻĻāĻā§āĻˇ!
INSERT INTO invoice_import
VALUES
('0123456789', 'ĐĐ°ŅŅ', 'A-01', '2020-03-16', 1000.00)
, ('9876543210', 'ĐĐĩŅŅ', 'A-02', '2020-03-16', 666.00)
, ('0123456789', 'ĐĐ°ŅŅ', 'B-03', '2020-03-16', 9999.00);
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻ¸ā§āĻ "āĻāĻžāĻāĻā§āĻ˛āĻŋ" āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° "āĻ¤āĻĨā§āĻ¯" āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻžāĻ˛āĻžāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§:
CREATE TEMPORARY TABLE client_import AS
SELECT DISTINCT ON(client_inn)
-- ĐŧĐžĐļĐŊĐž ĐŋŅĐžŅŅĐž SELECT DISTINCT, ĐĩŅĐģи Đ´Đ°ĐŊĐŊŅĐĩ СавĐĩĐ´ĐžĐŧĐž ĐŊĐĩĐŋŅĐžŅивОŅĐĩŅивŅ
client_inn inn
, client_name "name"
FROM
invoice_import;
āĻā§āĻ°āĻžāĻšāĻ āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻŦāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ā§ˇ āĻ¤āĻžāĻĻā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ:
ALTER TABLE invoice_import ADD COLUMN client_id integer;
ALTER TABLE client_import ADD COLUMN client_id integer;
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻā§āĻ āĻ¸āĻāĻļā§āĻ§āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ - āĻāĻŽāĻ°āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻŋāĻā§ āĻāĻĒāĻĄā§āĻ āĻŦāĻž āĻŽā§āĻāĻŦ āĻ¨āĻž, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻĻā§āĻ° āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°āĻŋ "āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ°-āĻ¸āĻāĻ¯ā§āĻāĻ¨":
-- ĐŋŅĐžŅŅавĐģŅĐĩĐŧ в ŅĐ°ĐąĐģиŅĐĩ иĐŧĐŋĐžŅŅĐ° ID ŅĐļĐĩ ŅŅŅĐĩŅŅвŅŅŅиŅ
СаĐŋиŅĐĩĐš
UPDATE
client_import T
SET
client_id = D.client_id
FROM
client D
WHERE
T.inn = D.inn; -- unique key
-- вŅŅавĐģŅĐĩĐŧ ĐžŅŅŅŅŅŅвОвавŅиĐĩ СаĐŋиŅи и ĐŋŅĐžŅŅавĐģŅĐĩĐŧ иŅ
ID
WITH ins AS (
INSERT INTO client(
inn
, name
)
SELECT
inn
, name
FROM
client_import
WHERE
client_id IS NULL -- ĐĩŅĐģи ID ĐŊĐĩ ĐŋŅĐžŅŅавиĐģŅŅ
RETURNING *
)
UPDATE
client_import T
SET
client_id = D.client_id
FROM
ins D
WHERE
T.inn = D.inn; -- unique key
-- ĐŋŅĐžŅŅавĐģŅĐĩĐŧ ID ĐēĐģиĐĩĐŊŅОв Ņ СаĐŋиŅĐĩĐš ŅŅĐĩŅОв
UPDATE
invoice_import T
SET
client_id = D.client_id
FROM
client_import D
WHERE
T.client_inn = D.inn; -- ĐŋŅиĐēĐģĐ°Đ´ĐŊОК ĐēĐģŅŅ
āĻāĻ¸āĻ˛ā§, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻā§ invoice_import
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¯ā§āĻāĻžāĻ¯ā§āĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĻāĻŋ client_id
, āĻ¯āĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ˛āĻžāĻ¨ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com