ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ DDL: ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ?
Π§Π°ΡΡΡ DDL Π² PostgreSQL Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄ ACCESS EXCLUSIVE. ΠΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠ΅: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ DEFAULT β Ρ Π²Π΅ΡΡΠΈΠΈ 11 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
), ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ NOT VALID-ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ½ΡΡΠΈΠ΅ NOT NULL. ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ: ΡΠΌΠ΅Π½Π° ΡΠΈΠΏΠ° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ Π²ΠΎΠ»Π°ΡΠΈΠ»ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ALTER TABLE ... SET LOGGED. ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ Π±ΡΡΡΡΡ, Π½ΠΎ ΠΆΠ΄ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ²; ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ±ΠΎΠΉ DDL Π² ΠΏΡΠΎΠ΄Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Ρ lock_timeout ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎΠ»Π³ΠΈΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π²ΡΠ½ΠΎΡΡΡ ΠΈΠ· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ: CREATE INDEX CONCURRENTLY, ALTER TABLE ... ADD CONSTRAINT ... NOT VALID Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ VALIDATE CONSTRAINT, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ NOT NULL ΡΠ΅ΡΠ΅Π· CHECK NOT VALID β VALIDATE β SET NOT NULL.