เชฎเซเชเชพ เชกเซเชเชพ เชธเซเชเซเชธเชจเซ เชเชเชฟเชฒ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฎเชพเชเซ (เช
เชฒเช
เช เชชเซเชฐเชเชพเชฐเชจเซเช เชธเชพเชฎเชพเชจเซเชฏ เชเชพเชฐเซเชฏ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชจเชพ เชเซเชตเซเช เชเชเชเช เชธเชเชญเชณเชพเชฏ เชเซ: "เช
เชนเซเชเชฅเซ
เชชเชฐเชเชคเซ เชเซเชฏเชพเชฐเซ เช "เชเชเชเช" เชจเซเช เชตเซเชฒเซเชฏเซเชฎ เชธเซเชเชเชกเซ เชฎเซเชเชพเชฌเชพเชเชเซเชธเชฎเชพเช เชฎเชพเชชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ, เช
เชจเซ เชธเซเชตเชพเช เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ 24x7 เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชพเชเชตเซเช เชเซเชเช, เชคเซเชฏเชพเชฐเซ เชเชฃเซ เชเชกเช
เชธเชฐเซ เชเชญเซ เชฅเชพเชฏ เชเซ เชเซ เชคเชฎเชพเชฐเซเช เชเซเชตเชจ เชฌเชเชพเชกเซ เชเซ.
PostgreSQL เชฎเชพเช เชคเซเชฎเชจเซ เชธเชพเชฅเซ เชตเซเชฏเชตเชนเชพเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ (เช
เชจเซ เชฎเชพเชคเซเชฐ เชคเซเชฎเชพเช เช เชจเชนเซเช), เชคเชฎเซ เชเซเชเชฒเชพเช เชเชชเซเชเชฟเชฎเชพเชเชเซเชถเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ เชเซ เชคเชฎเชจเซ เชฆเชฐเซเช เชตเชธเซเชคเซ เชชเชฐ เชเชกเชชเชฅเซ เช
เชจเซ เชเชเชพ เชธเชเชธเชพเชงเชจ เชตเชชเชฐเชพเชถ เชธเชพเชฅเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชถเซ.
1. เชเซเชฏเชพเช เชฎเซเชเชฒเชตเซเช?
เชชเซเชฐเชฅเชฎ, เชเชพเชฒเซ เชจเชเซเชเซ เชเชฐเซเช เชเซ เชเชชเชฃเซ "เชชเซเชฐเชเซเชฐเชฟเชฏเชพ" เชเชฐเชตเชพ เชฎเชพเชเซเช เชเซเช เชคเซ เชกเซเชเชพ เชเซเชฏเชพเช เช เชชเชฒเซเชก เชเชฐเซ เชถเชเซเช.
1.1. เช เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเชเซ (เช เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเช)
เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชฐเซเชคเซ, PostgreSQL เชฎเชพเชเซ เช เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเชเซ เช เชจเซเชฏ เชเซเชเชชเชฃ เชเซเชตเชพ เช เชเซ. เชคเซเชฅเซ, เช เชเชงเชถเซเชฐเชฆเซเชงเชพ เชเชฎเซ เชเซ "เชคเซเชฏเชพเชเชจเซ เชฆเชฐเซเช เชตเชธเซเชคเซ เชซเชเซเชค เชฎเซเชฎเชฐเซเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชเซ, เช เชจเซ เชคเซ เชธเชฎเชพเชชเซเชค เชฅเช เชถเชเซ เชเซ". เชชเชฐเชเชคเซ เชเซเชเชฒเชพเช เชจเซเชเชงเชชเชพเชคเซเชฐ เชคเชซเชพเชตเชคเซ เชชเชฃ เชเซ.
เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซเชจเชพ เชฆเชฐเซเช เชเชจเซเชเซเชถเชจ เชฎเชพเชเซ เชคเชฎเชพเชฐเซเช เชชเซเชคเชพเชจเซเช "เชจเซเชฎเชธเซเชชเซเชธ".
เชเซ เชฌเซ เชเซเชกเชพเชฃเซ เชเช เช เชธเชฎเชฏเซ เชเชจเซเชเซเช เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ CREATE TABLE x
, เชชเชเซ เชเซเชเชจเซ เชเซเชเซเชเชธเชชเชฃเซ เชฎเชณเชถเซ เชฌเชฟเชจ-เชตเชฟเชถเชฟเชทเซเชเชคเชพ เชญเซเชฒ เชกเซเชเชพเชฌเซเช เชชเชฆเชพเชฐเซเชฅเซ.
เชชเชฐเชเชคเซ เชเซ เชฌเชเชจเซ เชเชฒเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชเซ CREATE TEMPORARY TABLE x
, เชชเชเซ เชฌเชเชจเซ เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชฐเชถเซ, เช
เชจเซ เชฆเชฐเซเชเชจเซ เชฎเชณเชถเซ เชคเชฎเชพเชฐเซ เชจเชเชฒ เชเซเชทเซเชเชเซ เช
เชจเซ เชคเซเชฎเชจเซ เชตเชเซเชเซ เชเชเชเชชเชฃ เชธเชพเชฎเซเชฏ เชนเชถเซ เชจเชนเซเช.
เชกเชฟเชธเซเชเชจเซเชเซเช เชเชฐเชคเซ เชตเชเชคเซ "เชธเซเชต-เชตเชฟเชจเชพเชถ".
เชเซเชฏเชพเชฐเซ เชเชจเซเชเซเชถเชจ เชฌเชเชง เชนเซเชฏ, เชคเซเชฏเชพเชฐเซ เชคเชฎเชพเชฎ เช
เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเชเซ เชเชชเชฎเซเชณเซ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฅเซ เชฎเซเชจเซเชฏเซเช
เชฒเซ DROP TABLE x
เชธเชฟเชตเชพเชฏ เชเซเช เช
เชฐเซเชฅ เชจเชฅเซ...
เชเซ เชคเชฎเซ เชฎเชพเชฐเชซเชคเซ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชฎเซเชกเชฎเชพเช pgbouncer, เชชเชเซ เชกเซเชเชพเชฌเซเช เชฎเชพเชจเซ เชเซ เชเซ เช เชเซเชกเชพเชฃ เชนเชเซ เชชเชฃ เชธเชเซเชฐเชฟเชฏ เชเซ, เช เชจเซ เชคเซเชฎเชพเช เช เช เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเช เชนเชเซ เชชเชฃ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชเซ.
เชคเซเชฅเซ, เชคเซเชจเซ เชซเชฐเซเชฅเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ, pgbouncer เชธเชพเชฅเซ เช
เชฒเช เชเซเชกเชพเชฃเชฅเซ, เชญเซเชฒเชฎเชพเช เชชเชฐเชฟเชฃเชฎเชถเซ. เชชเชฐเชเชคเซ เชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เช
เชเชเชพเชตเซ เชถเชเชพเชฏ เชเซ CREATE TEMPORARY TABLE IF NOT EXISTS x
.
เชธเชพเชเซเช, เชเซเชเชชเชฃ เชฐเซเชคเซ เช เชจ เชเชฐเชตเซเช เชตเชงเซ เชธเชพเชฐเซเช เชเซ, เชเชพเชฐเชฃ เชเซ เชชเชเซ เชคเชฎเซ "เช
เชเชพเชจเช" เชคเซเชฏเชพเช "เช
เชเชพเชเชจเชพ เชฎเชพเชฒเชฟเช" เชชเชพเชธเซเชฅเซ เชฌเชพเชเซ เชฐเชนเซเชฒเซ เชกเซเชเชพ เชถเซเชงเซ เชถเชเซ เชเซ. เชคเซเชจเชพ เชฌเชฆเชฒเซ, เชฎเซเชจเซเชฏเซเช
เชฒ เชตเชพเชเชเชตเซเช เช
เชจเซ เชเซเชฌเชฒ เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชเชฎเซเชฐเชตเชพเชจเซเช เชถเชเซเชฏ เชเซ เชคเซ เชเซเชตเชพเชจเซเช เชตเชงเซ เชธเชพเชฐเซเช เชเซ ON COMMIT DROP
- เชเชเชฒเซ เชเซ, เชเซเชฏเชพเชฐเซ เชตเซเชฏเชตเชนเชพเชฐ เชชเซเชฐเซเชฃ เชฅเชถเซ, เชคเซเชฏเชพเชฐเซ เชเซเชฌเชฒ เชเชชเชฎเซเชณเซ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชฌเชฟเชจ-เชชเซเชฐเชคเชฟเชเซเชคเชฟ
เชเชพเชฐเชฃ เชเซ เชคเซเช เชฎเชพเชคเซเชฐ เชเซเชเซเชเชธ เชเชจเซเชเซเชถเชจเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชเซ, เช เชธเซเชฅเชพเชฏเซ เชเซเชทเซเชเชเซเชจเซ เชจเชเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ. เชชเชฃ เช เชกเซเชเชพเชจเชพ เชกเชฌเชฒ เชฐเซเชเซเชฐเซเชกเชฟเชเชเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชคเชจเซ เชฆเซเชฐ เชเชฐเซ เชเซ เชขเชเชฒเซ + WAL เชฎเชพเช, เชคเซเชฅเซ เชคเซเชฎเชพเช INSERT/UPDATE/DELETE เชเชฐเชตเซเช เชตเชงเซ เชเชกเชชเซ เชเซ.
เชชเชฐเชเชคเซ เชเชพเชฎเชเชฒเชพเช เชเซเชฌเชฒ เชนเชเซ เชชเชฃ "เชฒเชเชญเช เชธเชพเชฎเชพเชจเซเชฏ" เชเซเชฌเชฒ เชนเซเชตเชพเชฅเซ, เชคเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชชเชฐ เชชเชฃ เชฌเชจเชพเชตเซ เชถเชเชพเชคเซเช เชจเชฅเซ. เชเชเชพเชฎเชพเช เชเชเชพ เชนเชฎเชฃเชพเช เชฎเชพเชเซ, เชเซ เชเซ เช เชจเซเชฐเซเชช เชชเซเช เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เชซเชฐเชคเซ เชฐเชนเซเชฏเซ เชเซ.
1.2. เช เชจเชฒเซเช เชเชฐเซเชฒ เชเซเชทเซเชเช
เชชเชฐเชเชคเซ เชคเชฎเชพเชฐเซ เชถเซเช เชเชฐเชตเซเช เชเซเชเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เช เชฎเซเช เชชเซเชฐเชเชพเชฐเชจเซ เชฌเซเชเชพเชฐเซเชช ETL เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ เชเซ เชเช เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช เชฒเชพเชเซ เชเชฐเซ เชถเชเชพเชคเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชนเชเซ เชชเชฃ เชเซ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชฎเซเชกเชฎเชพเช pgbouncer? ..
เช เชฅเชตเชพ เชกเซเชเชพ เชซเซเชฒเซ เชเชเชฒเซ เชฎเซเชเซ เชเซ เชเซ เชเช เชเชจเซเชเซเชถเชจ เชชเชฐ เชชเซเชฐเชคเซ เชฌเซเชจเซเชกเชตเชฟเชกเซเชฅ เชจเชฅเซ เชกเซเชเชพเชฌเซเชเชฎเชพเชเชฅเซ (เชตเชพเชเชเซ, CPU เชฆเซเช เชเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ)?..
เช เชฅเชตเชพ เช เชฎเซเช เชเชพเชฎเชเซเชฐเซ เชเชพเชฒเซ เชฐเชนเซ เชเซ เช เชธเซเชฎเซเชณ เชฐเซเชคเซ เชตเชฟเชตเชฟเชง เชเซเชกเชพเชฃเซเชฎเชพเช? ..
เช เชนเซเช เชซเชเซเชค เชเช เช เชตเชฟเชเชฒเซเชช เชเซ - เช เชธเซเชฅเชพเชฏเซ เชฐเซเชชเซ เชฌเชฟเชจ-เช เชธเซเชฅเชพเชฏเซ เชเซเชฌเชฒ เชฌเชจเชพเชตเซ. เชชเชจ, เชนเชพ. เชคเซ เช:
- เชฎเชนเชคเซเชคเชฎ เชฐเซเชจเซเชกเชฎ เชจเชพเชฎเซ เชธเชพเชฅเซ "เชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ" เชเซเชทเซเชเชเซ เชฌเชจเชพเชตเซเชฏเชพเช เชเซเชฅเซ เชเซเชเชจเซ เชธเชพเชฅเซ เชเซเชฆเชพเชฏ เชจเชนเซเช
- เช เชฐเซเช: เชคเซเชฎเชจเซ เชฌเชพเชนเซเชฏ เชธเซเชคเซเชฐเซเชคเชจเชพ เชกเซเชเชพเชฅเซ เชญเชฐเซเชฏเชพ
- เชฐเซเชชเชพเชเชคเชฐเชฃ: เชฐเซเชชเชพเชเชคเชฐเชฟเชค, เชเซ เชฒเชฟเชเชเชฟเชเช เชซเซเชฒเซเชกเซเชธเชฎเชพเช เชญเชฐเซเชฒ
- เชฒเซเชก: เชฒเชเซเชทเซเชฏ เชเซเชทเซเชเชเซเชฎเชพเช เชคเซเชฏเชพเชฐ เชกเซเชเชพ เชฐเซเชกเซเชฏเซ
- "เชฎเชพเชฐเชพ" เชเซเชทเซเชเชเซ เชเชพเชขเซ เชจเชพเชเซเชฏเชพ
เช
เชจเซ เชนเชตเซ - เชฎเชฒเชฎ เชฎเชพเช เชซเซเชฒเชพเชฏ. เชนเชเชฟเชเชคเชฎเชพเช, 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
-เชฎเซเชฒเซเชฏเซ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชชเซเชฐเชพเชฅเชฎเชฟเช เชเซ เชฎเซเชฒเซเชฏเซ เชญเชฐเชตเชพ เชฎเชพเชเซ), เชคเชฎเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ LIKE target_table INCLUDING DEFAULTS
. เช
เชฅเชตเชพ เชเชพเชฒเซ - LIKE target_table INCLUDING ALL
- เชกเชฟเชซเซเชฒเซเช, เช
เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ, เช
เชตเชฐเซเชงเซ,...
เชชเชฐเชเชคเซ เช
เชนเซเช เชคเชฎเชพเชฐเซ เชธเชฎเชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชเซ เชคเชฎเซ เชฌเชจเชพเชตเซเชฏเซเช เชเซ เชเชจเซเชกเซเชเซเชธ เชธเชพเชฅเซ เชคเชฐเชค เช เชเซเชฌเชฒ เชเชฏเชพเชค เชเชฐเซ, เชชเชเซ เชกเซเชเชพ เชฒเซเชก เชฅเชตเชพเชฎเชพเช เชตเชงเซ เชธเชฎเชฏ เชฒเซเชถเซเชเซ เชคเชฎเซ เชชเชนเซเชฒเชพ เชฌเชงเซเช เชญเชฐเซ, เช
เชจเซ เชชเชเซ เช เช
เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพเช เชฐเซเชฒ เช
เชช เชเชฐเซ - เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชคเซ เช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเซ เชเซ เชคเซ เชเซเช
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ
2. เชเซเชตเซ เชฐเซเชคเซ เชฒเชเชตเซเช?
เชฎเชจเซ เชซเชเซเชค เชเชนเซเชตเชพ เชฆเซ - เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ
- "เชชเซเช" เชจเซ เชฌเชฆเชฒเซ เชชเซเชฐเชตเชพเชน INSERT
,
3. เชเซเชตเซ เชฐเซเชคเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเซ?
เชคเซ, เชเชพเชฒเซ เชเชชเชฃเซ เชชเชฐเชฟเชเชฏ เชเชเชเช เชเชจเชพ เชเซเชตเซ เชเซเชเช:
- เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชคเชฎเชพเชฐเชพ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชเซเชฒเชพเชฏเชเช เชกเซเชเชพ เชธเชพเชฅเซเชจเซเช เชเซเชฌเชฒ เชเซ 1M เชฐเซเชเซเชฐเซเชก
- เชฆเชฐเชฐเซเช เชเซเชฐเชพเชนเช เชคเชฎเชจเซ เชเช เชจเชตเซเช เชฎเซเชเชฒเซ เชเซ เชธเชเชชเซเชฐเซเชฃ "เชเชฌเซ"
- เช เชจเซเชญเชต เชชเชฐเชฅเซ เชคเชฎเซ เชเชพเชฃเซ เชเซ เชเซ เชธเชฎเชฏ เชธเชฎเชฏ เชชเชฐ 10K เชเชฐเชคเชพเช เชตเชงเซ เชฐเซเชเซเชฐเซเชกเซเชธ เชฌเชฆเชฒเชพเชคเชพ เชจเชฅเซ
เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช เชเชคเซเชคเชฎ เชเชฆเชพเชนเชฐเชฃ เชเซ
3.1. เชธเชเชชเซเชฐเซเชฃ เชธเชฟเชเชเซเชฐเชจเชพเชเชเซเชถเชจ เช เชฒเซเชเซเชฐเชฟเชงเชฎ
เชธเชฐเชณเชคเชพ เชฎเชพเชเซ, เชเชพเชฒเซ เชเชนเซเช เชเซ เชคเชฎเชพเชฐเซ เชกเซเชเชพเชจเซเช เชชเซเชจเชฐเซเชเช เชจ เชเชฐเชตเชพเชจเซ เชชเชฃ เชเชฐเซเชฐ เชจเชฅเซ - เชซเชเซเชค เชเซเชฌเชฒเชจเซ เชเชเซเชเชฟเชค เชธเซเชตเชฐเซเชชเชฎเชพเช เชฒเชพเชตเซ, เชเชเชฒเซ เชเซ:
- เชฆเซเชฐ เชเชฐเซ เชฌเชงเซเช เชเซ เชนเชตเซ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจเชฅเซ
- เช เชชเชกเซเช เชชเชนเซเชฒเชพเชฅเซ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชเซ เช เชจเซ เช เชชเชกเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชคเซ เชฌเชงเซเช
- เชฆเชพเชเชฒ เชเชฐเซ เชฌเชงเซเช เชเซ เชนเชเซ เชธเซเชงเซ เชฅเชฏเซเช เชจเชฅเซ
เช เชเซเชฐเชฎเชฎเชพเช เชเชพเชฎเชเซเชฐเซ เชถเชพ เชฎเชพเชเซ เชเชฐเชตเซ เชเซเชเช? เชเชพเชฐเชฃ เชเซ เช เชฐเซเชคเซ เชเซเชฌเชฒเชจเซเช เชเชฆ เชจเซเชฏเซเชจเชคเชฎ เชตเชงเชถเซ (
dst เชฅเซ เชเชพเชขเซ เชจเชพเชเซ
เชจเชพ, เช เชฒเชฌเชคเซเชค เชคเชฎเซ เชฎเชพเชคเซเชฐ เชฌเซ เชเชชเชฐเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชฎเซเชณเชตเซ เชถเชเซ เชเซ:
- เชฆเซเชฐ เชเชฐเซ (
DELETE
) เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฌเชงเซเช - เชฆเชพเชเชฒ เชเชฐเซ เชฌเชงเซ เชจเชตเซ เชเชฌเซเชฎเชพเชเชฅเซ
เชชเชฐเชเชคเซ เชคเซ เช เชธเชฎเชฏเซ, MVCC เชจเซ เชเชญเชพเชฐ, เชเซเชฌเชฒเชจเซเช เชเชฆ เชฌเชฐเชพเชฌเชฐ เชฌเชฎเชฃเซเช เชตเชงเชถเซ! 1K เช เชชเชกเซเชเชจเซ เชเชพเชฐเชฃเซ เชเซเชทเซเชเชเชฎเชพเช เชฐเซเชเซเชฐเซเชกเซเชธเชจเซ +10M เชเชฌเซเช เชฎเซเชณเชตเชตเซ เชเซเชฌ เช เชฐเซเชกเชจเซเชกเชจเซเชธเซ เชเซ...
TRUNCATE เชคเชพ
เชตเชงเซ เช เชจเซเชญเชตเซ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพ เชเชพเชฃเซ เชเซ เชเซ เชธเชฎเชเซเชฐ เชเซเชฌเซเชฒเซเช เชคเชฆเซเชฆเชจ เชธเชธเซเชคเซ เชฐเซเชคเซ เชธเชพเชซ เชเชฐเซ เชถเชเชพเชฏ เชเซ:
- เชเซเชเซเชเซ (
TRUNCATE
) เชธเชฎเชเซเชฐ เชเซเชฌเชฒ - เชฆเชพเชเชฒ เชเชฐเซ เชฌเชงเซ เชจเชตเซ เชเชฌเซเชฎเชพเชเชฅเซ
เชชเชฆเซเชงเชคเชฟ เช
เชธเชฐเชเชพเชฐเช เชเซ,
เชฎเชคเชฒเชฌ เชเซ:
- เช เชฎเซ เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เชเชพเชฒเชคเซ เชตเซเชฏเชตเชนเชพเชฐ
TRUNCATE
เชฒเชพเชฆเซ เชเซ เชเชเซเชธเซเชธ เชเชเซเชธเชเซเชฒเซเชเชฟเชต- เช เชตเชฐเซเชงเชฟเชค เชเชฐเชตเซเช- เช
เชฎเซ เชฒเชพเชเชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ เชจเชฟเชตเซเชถ เชเชฐเซเช เชเซเช, เช
เชจเซ เช เชธเชฎเชฏเซ เชฌเซเชเชพ เชฌเชงเชพ เชชเชฃ เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ
SELECT
เชเชเชเช เชธเชพเชฐเซเช เชจเชฅเซ เชเชพเชฒเซ เชฐเชนเซเชฏเซเช...
เชเซเชฌเชฒ เชฌเชฆเชฒเซ... เชจเชพเชฎ เชฌเชฆเชฒเซ... / เชเซเชฌเชฒ เชเซเชกเซ...
เชเช เชตเชฟเชเชฒเซเชช เช เชเซ เชเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชเช เช เชฒเช เชจเชตเชพ เชเซเชฌเชฒเชฎเชพเช เชญเชฐเซ, เช เชจเซ เชชเชเซ เชคเซเชจเซ เชเซเชจเชพเชจเซ เชเชเซเชฏเชพเช เชซเชเซเชค เชจเชพเชฎ เชเชชเซ. เชฌเซ เชฌเซเชญเชคเซเชธ เชจเชพเชจเซ เชตเชธเซเชคเซเช:
- เชนเชเซ เชชเชฃ เชเชเซเชธเซเชธ เชเชเซเชธเชเซเชฒเซเชเชฟเชต, เชเซเชเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฐเซเชคเซ เชเชเซ เชธเชฎเชฏ
- เช เชเซเชทเซเชเช เชฎเชพเชเซเชจเซ เชคเชฎเชพเชฎ เชเซเชตเซเชฐเซ เชฏเซเชเชจเชพเช/เชเชเชเชกเชพเช เชฐเซเชธเซเช เชเซ,
ANALYZE เชเชฒเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ - เชฌเชงเซ เชตเชฟเชฆเซเชถเซ เชเชพเชตเซเช เชคเซเชเซ เชเช เชเซ (FK) เชเซเชฌเชฒ เชชเชฐ
เชธเชฟเชฎเซเชจ เชฐเชฟเชเซเชธเชจเซ WIP เชชเซเช เชนเชคเซ เชเซเชฃเซ เชฌเชจเชพเชตเชตเชพเชจเซเช เชธเซเชเชจ เชเชฐเซเชฏเซเช เชนเชคเซเช ALTER
-เชเชเชเชกเชพ เช
เชจเซ เชเชซเชเซเชจเซ เชธเซเชชเชฐเซเชถเซเชฏเชพ เชตเชฟเชจเชพ, เชซเชพเชเชฒ เชธเซเชคเชฐเซ เชเซเชฌเชฒ เชฌเซเชกเซเชจเซ เชฌเชฆเชฒเชตเชพเชจเซ เชเชพเชฎเชเซเชฐเซ, เชชเชฐเชเชคเซ เชเซเชฐเชฎ เชเชเชคเซเชฐเชฟเชค เชฅเชฏเซ เชจ เชนเชคเซ.
เชเชพเชขเซ เชจเชพเชเซ, เช เชชเชกเซเช เชเชฐเซ, เชฆเชพเชเชฒ เชเชฐเซ
เชคเซเชฅเซ, เช เชฎเซ เชคเซเชฐเชฃ เชเชพเชฎเชเซเชฐเซเชจเชพ เชจเซเชจ-เชฌเซเชฒเซเชเซเชเช เชตเชฟเชเชฒเซเชช เชชเชฐ เชชเชคเชพเชตเช เชเชฐเซเช เชเซเช. เชฒเชเชญเช เชคเซเชฐเชฃ... เช เชธเซเชฅเซ เช เชธเชฐเชเชพเชฐเช เชฐเซเชคเซ เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซเช?
-- ะฒัะต ะดะตะปะฐะตะผ ะฒ ัะฐะผะบะฐั
ััะฐะฝะทะฐะบัะธะธ, ััะพะฑั ะฝะธะบัะพ ะฝะต ะฒะธะดะตะป "ะฟัะพะผะตะถััะพัะฝัั
" ัะพััะพัะฝะธะน
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;
เชเซเชฐเชพเชนเช IDs เชธเชพเชฅเซ เชเชเชพเชเชจเซเชเซเชธเชจเซ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชธเชพเชเชเชณเชตเชพ เชฎเชพเชเซ, เช เชฎเชพเชฐเซ เชชเชนเซเชฒเชพ เช เชเชณเชเชเชฐเซเชคเชพเชเชจเซ เชถเซเชงเชตเชพ เช เชฅเชตเชพ เชเชจเชฐเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเชพเชฒเซ เชคเซเชฎเชจเซ เชจเซเชเซ เชซเซเชฒเซเชกเซเชธ เชเชฎเซเชฐเซเช:
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