ALTER TABLE
ALTER TABLE â измениÑÑ Ð¾Ð¿Ñеделение ÑаблиÑÑ
СинÑакÑиÑ
ALTER TABLE [ IF EXISTS ] [ ONLY ]имÑ[ * ]дейÑÑвие[, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ]имÑ[ * ] RENAME [ COLUMN ]имÑ_ÑÑолбÑаTOновое_имÑ_ÑÑолбÑаALTER TABLE [ IF EXISTS ] [ ONLY ]имÑ[ * ] RENAME CONSTRAINTимÑ_огÑаниÑениÑTOимÑ_нового_огÑаниÑениÑALTER TABLE [ IF EXISTS ]имÑRENAME TOновое_имÑALTER TABLE [ IF EXISTS ]имÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°ALTER TABLE ALL IN TABLESPACEимÑ[ OWNED BYимÑ_Ñоли[, ... ] ] SET TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑво[ NOWAIT ] ÐдедейÑÑÐ²Ð¸ÐµÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: ADD [ COLUMN ] [ IF NOT EXISTS ]имÑ_ÑÑолбÑаÑип_даннÑÑ[ COLLATEпÑавило_ÑоÑÑиÑовки] [огÑаниÑение_ÑÑолбÑа[ ... ] ] DROP [ COLUMN ] [ IF EXISTS ]имÑ_ÑÑолбÑа[ RESTRICT | CASCADE ] ALTER [ COLUMN ]имÑ_ÑÑолбÑа[ SET DATA ] TYPEÑип_даннÑÑ[ COLLATEпÑавило_ÑоÑÑиÑовки] [ USINGвÑÑажение] ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET DEFAULTвÑÑажениеALTER [ COLUMN ]имÑ_ÑÑолбÑаDROP DEFAULT ALTER [ COLUMN ]имÑ_ÑÑолбÑа{ SET | DROP } NOT NULL ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET STATISTICSintegerALTER [ COLUMN ]имÑ_ÑÑолбÑаSET (аÑÑибÑÑ=знаÑение[, ... ] ) ALTER [ COLUMN ]имÑ_ÑÑолбÑаRESET (аÑÑибÑÑ[, ... ] ) ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADDогÑаниÑение_ÑаблиÑÑ[ NOT VALID ] ADDогÑаниÑение_ÑаблиÑÑ_по_индекÑÑALTER CONSTRAINTимÑ_огÑаниÑениÑ[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] VALIDATE CONSTRAINTимÑ_огÑаниÑениÑDROP CONSTRAINT [ IF EXISTS ]имÑ_огÑаниÑениÑ[ RESTRICT | CASCADE ] DISABLE TRIGGER [имÑ_ÑÑиггеÑа| ALL | USER ] ENABLE TRIGGER [имÑ_ÑÑиггеÑа| ALL | USER ] ENABLE REPLICA TRIGGERимÑ_ÑÑиггеÑаENABLE ALWAYS TRIGGERимÑ_ÑÑиггеÑаDISABLE RULEимÑ_пÑавила_пеÑезапиÑиENABLE RULEимÑ_пÑавила_пеÑезапиÑиENABLE REPLICA RULEимÑ_пÑавила_пеÑезапиÑиENABLE ALWAYS RULEимÑ_пÑавила_пеÑезапиÑиDISABLE ROW LEVEL SECURITY ENABLE ROW LEVEL SECURITY FORCE ROW LEVEL SECURITY NO FORCE ROW LEVEL SECURITY CLUSTER ONимÑ_индекÑаSET WITHOUT CLUSTER SET WITH OIDS SET WITHOUT OIDS SET TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑвоSET { LOGGED | UNLOGGED } SET (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] ) RESET (паÑамеÑÑ_Ñ ÑанениÑ[, ... ] ) INHERITÑаблиÑа_ÑодиÑелÑNO INHERITÑаблиÑа_ÑодиÑелÑOFимÑ_ÑипаNOT OF OWNER TO {новÑй_владелеÑ| CURRENT_USER | SESSION_USER } REPLICA IDENTITY { DEFAULT | USING INDEXимÑ_индекÑа| FULL | NOTHING } иогÑаниÑение_ÑаблиÑÑ_по_индекÑÑ: [ CONSTRAINTимÑ_огÑаниÑениÑ] { UNIQUE | PRIMARY KEY } USING INDEXимÑ_индекÑа[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
ÐпиÑание
ALTER TABLE менÑÐµÑ Ð¾Ð¿Ñеделение ÑÑÑеÑÑвÑÑÑей ÑаблиÑÑ. ÐеÑколÑко ÐµÑ ÑазновидноÑÑей опиÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ. ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ ÑазнÑÑ
ÑазновидноÑÑей могÑÑ ÑÑебоваÑÑÑÑ ÑазнÑе ÑÑовни блокиÑовок. ÐÑли Ñвно не оÑмеÑено дÑÑгое, запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка ACCESS EXCLUSIVE. ÐÑи Ñказании неÑколÑкиÑ
подкоманд бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑаÑиваÑÑÑÑ ÑÐ°Ð¼Ð°Ñ ÑилÑÐ½Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка из ÑÑебÑемÑÑ
ими.
ADD COLUMN [ IF NOT EXISTS ]ÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑаблиÑÑ Ð½Ð¾Ð²Ñй ÑÑолбеÑ, Ñ Ñем же ÑинÑакÑиÑом, ÑÑо и CREATE TABLE. ÐÑли Ñказано
IF NOT EXISTSи ÑÑÐ¾Ð»Ð±ÐµÑ Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ, ÑÑо не бÑÐ´ÐµÑ Ð¾Ñибкой.DROP COLUMN [ IF EXISTS ]ÐÑа ÑоÑма ÑдалÑÐµÑ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð· ÑаблиÑÑ. ÐÑи ÑÑом авÑомаÑиÑеÑки бÑдÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸ огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ, ÑвÑзаннÑе Ñ ÑÑим ÑÑолбÑом. ÐÑли Ð¾Ñ ÑÑого ÑÑолбÑа завиÑÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо обÑекÑÑ Ð²Ð½Ðµ ÑÑой ÑаблиÑÑ, напÑимеÑ, внеÑние клÑÑи или пÑедÑÑавлениÑ, ÑдалиÑÑ Ð¸ Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾, добавив Ñказание
CASCADE. ÐÑли в команде ÑказаноIF EXISTSи ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой, вмеÑÑо ÑÑого пÑоÑÑо вÑдаÑÑÑÑ Ð·Ð°Ð¼ÐµÑание.SET DATA TYPEÐÑа ÑоÑма менÑÐµÑ Ñип ÑÑолбÑа ÑаблиÑÑ. ÐндекÑÑ Ð¸ пÑоÑÑÑе ÑаблиÑнÑе огÑаниÑениÑ, вклÑÑаÑÑие ÑÑÐ¾Ñ ÑÑолбеÑ, бÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñипа ÑÑолбÑа, Ð´Ð»Ñ Ñего бÑÐ´ÐµÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ ÑазобÑано опÑеделÑÑÑее Ð¸Ñ Ð²ÑÑажение. ÐеобÑзаÑелÑное пÑедложение
COLLATEзадаÑÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑолбÑа; еÑли оно опÑÑено, вÑбиÑаеÑÑÑ Ð¿Ñавило ÑоÑÑиÑовки по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñипа. ÐеобÑзаÑелÑное пÑедложениеUSINGопÑеделÑеÑ, как новое знаÑение ÑÑолбÑа бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑено из ÑÑаÑого; еÑли оно оÑÑÑÑÑÑвÑеÑ, вÑполнÑеÑÑÑ Ð¿Ñиведение Ñипа по ÑмолÑаниÑ, как обÑÑное пÑиÑваивание знаÑÐµÐ½Ð¸Ñ ÑÑаÑого Ñипа новомÑ. ÐÑедложениеUSINGÑÑановиÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм, еÑли неÑвное пÑиведение или пÑиÑваивание Ñ Ð¿Ñиведением ÑÑаÑого Ñипа к Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð½Ðµ опÑеделено.SET/DROP DEFAULTÐÑи ÑоÑÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑов. ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑименÑÑÑÑÑ ÑолÑко пÑи поÑледÑÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ
INSERTилиUPDATE; Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ оÑÑажаÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÐ°Ñ , Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð² ÑаблиÑе.SET/DROP NOT NULLÐÑи ÑоÑÐ¼Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL или неÑ. ÐадаÑÑ
SET NOT NULLможно, ÑолÑко еÑли ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ ÑодеÑÐ¶Ð¸Ñ Ð·Ð½Ð°Ñений NULL.SET STATISTICSÐÑа ÑоÑма задаÑÑ Ð¾ÑиенÑÐ¸Ñ ÑбоÑа ÑÑаÑиÑÑики по ÑÑолбÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑий ANALYZE. Ðиапазон допÑÑÑимÑÑ Ð·Ð½Ð°Ñений оÑиенÑиÑа: 0..10000; пÑи -1 пÑименÑеÑÑÑ ÑиÑÑемное знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ (default_statistics_target). Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов Postgres Pro обÑаÑиÑеÑÑ Ðº РазделÑ 14.2.
SET STATISTICSзапÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑSHARE UPDATE EXCLUSIVE.SET (аÑÑибÑÑ=знаÑение[, ... ] )RESET (аÑÑибÑÑ[, ... ] )ÐÑа ÑоÑма ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð°ÑÑибÑÑов. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑми паÑамеÑÑами аÑÑибÑÑов ÑвлÑÑÑÑÑ
n_distinctиn_distinct_inherited, коÑоÑÑе пеÑеопÑеделÑÑÑ Ð¾ÑÐµÐ½ÐºÑ ÐºÐ¾Ð»-ва_ÑазлиÑнÑÑ _знаÑений, пÑоизводимÑÑ Ð¿Ð¾ÑледÑÑÑими опеÑаÑиÑми ANALYZE. ÐÑÑибÑÑn_distinctвлиÑÐµÑ Ð½Ð° ÑаÑÑÑÑ ÑÑаÑиÑÑики по Ñамой ÑаблиÑе, аn_distinct_inheritedâ на ÑÑаÑиÑÑÐ¸ÐºÑ Ð¿Ð¾ ÑаблиÑе и ÐµÑ Ð¿Ð¾Ñомкам. ÐÑли заданное знаÑение положиÑелÑно,ANALYZEбÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо ÑÑÐ¾Ð»Ð±ÐµÑ ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑÑо колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений не NULL. ÐÑли заданное знаÑение оÑÑиÑаÑелÑно (оно должно бÑÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно -1),ANALYZEбÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений не NULL в ÑÑолбÑе линейно завиÑÐ¸Ñ Ð¾Ñ ÑазмеÑа ÑаблиÑÑ; ÑоÑное ÑиÑло бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑено Ñмножением пÑимеÑного ÑазмеÑа ÑаблиÑÑ Ð½Ð° абÑолÑÑное знаÑение паÑамеÑÑа. ÐапÑимеÑ, пÑи -1 бÑÐ´ÐµÑ Ð¿ÑедполагаÑÑÑÑ, ÑÑо ÑазлиÑÐ½Ñ Ð²Ñе знаÑÐµÐ½Ð¸Ñ Ð² ÑÑолбÑе, а пÑи -0,5 â ÑÑо в ÑÑеднем каждое знаÑение повÑоÑÑеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда ÑÐ°Ð·Ð¼ÐµÑ ÑаблиÑÑ Ð¼ÐµÐ½ÑеÑÑÑ Ñо вÑеменем, Ñак как Ñмножение на ÑиÑло ÑÑÑок в ÑаблиÑе пÑоизводиÑÑÑ ÑолÑко во вÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа. С 0 колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений оÑениваеÑÑÑ ÐºÐ°Ðº обÑÑно. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов Postgres Pro обÑаÑиÑеÑÑ Ðº РазделÑ 14.2.ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов аÑÑибÑÑов запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVE.-
SET STORAGE ÐÑа ÑоÑма ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ñежим Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑолбÑа. Ðна опÑеделÑеÑ, Ñ ÑанÑÑÑÑ Ð»Ð¸ даннÑе внÑÑÑи ÑаблиÑÑ Ð¸Ð»Ð¸ в оÑделÑной ÑаблиÑе TOAST, а Ñакже, ÑжимаÑÑÑÑ Ð»Ð¸ они. Режим
PLAINдолжен пÑименÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений ÑикÑиÑованной длинÑ, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðºinteger; ÑÑо ваÑÐ¸Ð°Ð½Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи, без ÑжаÑиÑ. РежимMAINпÑименÑеÑÑÑ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи, но ÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ ,EXTERNALâ Ð´Ð»Ñ Ð²Ð½ÐµÑнего Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ , аEXTENDEDâ Ð´Ð»Ñ Ð²Ð½ÐµÑнего Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ .EXTENDEDиÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва Ñипов даннÑÑ , поддеÑживаÑÑÐ¸Ñ Ñ ÑанилиÑе неPLAIN. ÐÑименениеEXTERNALпозволÑÐµÑ ÑÑкоÑиÑÑ Ð¾Ð¿ÐµÑаÑии Ñ Ð¿Ð¾Ð´ÑÑÑоками на оÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑtextиbytea, за ÑÑÑÑ Ð¿ÑоигÑÑÑа в обÑÑме Ñ ÑанилиÑа. ÐамеÑÑÑе, ÑÑо пÑедложениеSET STORAGEÑамо по Ñебе не менÑÐµÑ Ð½Ð¸Ñего в ÑаблиÑе, оно ÑолÑко задаÑÑ ÑÑÑаÑегиÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ñеализована пÑи бÑдÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÑÑ Ð² ÑаблиÑе. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 61.2.ADDогÑаниÑение_ÑаблиÑÑ[ NOT VALID ]ÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑаблиÑÑ Ð½Ð¾Ð²Ð¾Ðµ огÑаниÑение, пÑÐ¸Ð½Ð¸Ð¼Ð°Ñ ÑÐ¾Ñ Ð¶Ðµ ÑинÑакÑÐ¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¾Ð³ÑаниÑениÑ, ÑÑо и CREATE TABLE, а Ñакже дополниÑелÑное Ñказание
NOT VALID, коÑоÑое в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¾Ð³ÑаниÑений внеÑнего клÑÑа и огÑаниÑений-пÑовеÑок.ÐбÑÑно ÑÑа ÑоÑма влеÑÑÑ ÑканиÑование вÑей ÑаблиÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки, ÑÑо вÑе ÑÑÑеÑÑвÑÑÑие ÑÑÑоки в ÑаблиÑе ÑдовлеÑвоÑÑÑÑ Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¾Ð³ÑаниÑениÑ. Ðо еÑли иÑполÑзÑеÑÑÑ Ñказание
NOT VALID, ÑÑа поÑенÑиалÑно длиÑелÑÐ½Ð°Ñ Ð¿ÑовеÑка пÑопÑÑкаеÑÑÑ. Тем не менее ÑÑо огÑаниÑение бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð¿Ñи поÑледÑÑÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÑÑ Ð¸Ð»Ð¸ изменениÑÑ Ð´Ð°Ð½Ð½ÑÑ (Ñо еÑÑÑ ÑÑи опеÑаÑии не бÑдÑÑ Ð²ÑполненÑ, еÑли Ð½Ð¾Ð²Ð°Ñ ÑÑÑока наÑÑÑÐ¸Ñ ÑÑловие огÑаниÑениÑ-пÑовеÑки, либо пÑи налиÑии внеÑнего клÑÑа в главной ÑаблиÑе не найдÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑока). Ðо база даннÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо огÑаниÑение вÑполнÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ ÑÑÑок ÑаблиÑÑ, пока оно не бÑÐ´ÐµÑ Ð¿ÑовеÑено Ñ Ð¿Ñименением ÑказаниÑVALIDATE CONSTRAINT. ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± иÑполÑзовании ÑказаниÑNOT VALIDÐ²Ñ Ð½Ð°Ð¹Ð´ÐµÑе ниже, в ÐамеÑаниÑ.ХоÑÑ Ð¿Ð¾ÑÑи вÑе ÑазновидноÑÑи
ADDÑÑебÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑогÑаниÑение_ÑаблиÑÑACCESS EXCLUSIVE, Ð´Ð»Ñ ÑказаниÑADD FOREIGN KEYÑÑебÑеÑÑÑ ÑолÑко блокиÑовкаSHARE ROW EXCLUSIVE. ÐамеÑÑÑе, ÑÑоADD FOREIGN KEYзапÑаÑÐ¸Ð²Ð°ÐµÑ ÑакÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ÐºÐ°Ðº в ÑаблиÑе, в коÑоÑой добавлÑеÑÑÑ ÑÑо огÑаниÑение, Ñак и в ÑаблиÑе, на коÑоÑÑÑ ÑÑо огÑаниÑение ÑÑÑлаеÑÑÑ.ADDогÑаниÑение_ÑаблиÑÑ_по_индекÑÑÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑаблиÑÑ Ð½Ð¾Ð²Ð¾Ðµ огÑаниÑение
PRIMARY KEYилиUNIQUEна базе ÑÑÑеÑÑвÑÑÑего ÑникалÑного индекÑа. Ð ÑÑо огÑаниÑение бÑдÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ñ Ð²Ñе ÑÑолбÑÑ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ индекÑа.ÐÐ½Ð´ÐµÐºÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑаÑÑиÑнÑм и вклÑÑаÑÑ ÑÑолбÑÑ-вÑÑажениÑ. ÐÑоме Ñого, ÑÑо должен бÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ-B-деÑево Ñ Ð¿Ð¾ÑÑдком ÑоÑÑиÑовки по ÑмолÑаниÑ. С Ñакими огÑаниÑениÑми добавлÑемÑе индекÑÑ Ð½Ðµ бÑдÑÑ Ð½Ð¸Ñем оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð½Ð´ÐµÐºÑов, ÑоздаваемÑÑ Ð¾Ð±ÑÑнÑми командами
ADD PRIMARY KEYиADD UNIQUE.Ð ÑлÑÑае Ñ Ñказанием
PRIMARY KEY, еÑли ÑÑолбÑÑ Ð¸Ð½Ð´ÐµÐºÑа еÑÑ Ð½Ðµ помеÑенÑNOT NULL, Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° попÑÑаеÑÑÑ Ð²ÑполниÑÑALTER COLUMN SET NOT NULLÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа. ÐÑи ÑÑом поÑÑебÑеÑÑÑ Ð¿ÑоизвеÑÑи полное ÑканиÑование ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо ÑÑолбеÑ(Ñ) не ÑодеÑÐ¶Ð¸Ñ NULL. Ðо вÑÐµÑ Ð¾ÑÑалÑнÑÑ ÑлÑÑаÑÑ ÑÑо бÑÑÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑиÑ.ÐÑли задано Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑениÑ, Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑеименован и полÑÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ имÑ. РпÑоÑивном ÑлÑÑае именем огÑаниÑÐµÐ½Ð¸Ñ ÑÑÐ°Ð½ÐµÑ Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа.
ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð½Ð´ÐµÐºÑ ÑÑановиÑÑÑ Â«Ð¿ÑинадлежаÑим» огÑаниÑениÑ, Ñак же, как еÑли Ð±Ñ Ð¾Ð½ бÑл Ñоздан обÑÑной командой
ADD PRIMARY KEYилиADD UNIQUE. ÐÑо знаÑиÑ, в ÑаÑÑноÑÑи, ÑÑо пÑи Ñдалении огÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ ÑдалÑн вмеÑÑе Ñ Ð½Ð¸Ð¼.ÐÑимеÑание
Ðобавление огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° базе ÑÑÑеÑÑвÑÑÑего индекÑа бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ в ÑиÑÑаÑиÑÑ , когда новое огÑаниÑение ÑÑебÑеÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ, не блокиÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑаблиÑе на долгое вÑемÑ. ÐÐ»Ñ ÑÑого можно ÑоздаÑÑ Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
CREATE INDEX CONCURRENTLY, а заÑем задейÑÑвоваÑÑ ÐµÐ³Ð¾ как полноÑенное огÑаниÑение, иÑполÑзÑÑ ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ. См. ÑледÑÑÑий пÑимеÑ.ALTER CONSTRAINTÐÑа ÑоÑма менÑÐµÑ Ð°ÑÑибÑÑÑ Ñозданного Ñанее огÑаниÑениÑ. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа.
VALIDATE CONSTRAINTÐÑа ÑоÑма пÑовеÑÑÐµÑ Ð¾Ð³ÑаниÑение внеÑнего клÑÑа или огÑаниÑение-пÑовеÑкÑ, Ñозданное Ñанее Ñ Ñказанием
NOT VALID, ÑканиÑÑÑ Ð²ÑÑ ÑаблиÑÑ Ñ ÑелÑÑ ÑбедиÑÑÑÑ, ÑÑо огÑаниÑÐµÐ½Ð¸Ñ ÑдовлеÑвоÑÑÑÑ Ð²Ñе ÑÑÑоки. ÐÑли огÑаниÑение Ñже помеÑено как пÑовеÑенное, ниÑего не пÑоиÑÑ Ð¾Ð´Ð¸Ñ. (Ð ÑÑм полÑза ÑÑой командÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð² ÐамеÑаниÑ.)ÐÑа команда запÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
SHARE UPDATE EXCLUSIVE.DROP CONSTRAINT [ IF EXISTS ]ÐÑа ÑоÑма ÑдалÑÐµÑ Ñказанное огÑаниÑение ÑаблиÑÑ. ÐÑли Ñказано
IF EXISTSи заданное огÑаниÑение не ÑÑÑеÑÑвÑеÑ, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой. Ð ÑÑом ÑлÑÑае вÑдаÑÑÑÑ ÑолÑко замеÑание.DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGERÐÑи ÑоÑÐ¼Ñ Ð½Ð°ÑÑÑаиваÑÑ ÑÑабаÑÑвание ÑÑиггеÑа(ов), пÑинадлежаÑего ÑаблиÑе. ÐÑклÑÑÑннÑй ÑÑÐ¸Ð³Ð³ÐµÑ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑиÑÑеме, но не вÑполнÑеÑÑÑ, когда пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð²ÑзÑваÑÑее его ÑобÑÑие. ÐÐ»Ñ Ð¾ÑложеннÑÑ ÑÑиггеÑов ÑоÑÑоÑние вклÑÑÐµÐ½Ð¸Ñ Ð¿ÑовеÑÑеÑÑÑ Ð¿Ñи возникновении ÑобÑÑиÑ, а не когда ÑакÑиÑеÑки вÑзÑваеÑÑÑ ÑÑнкÑÐ¸Ñ ÑÑиггеÑа. ÐÑа команда Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð¾Ð´Ð¸Ð½ ÑÑÐ¸Ð³Ð³ÐµÑ Ð¿Ð¾ имени, либо вÑе ÑÑиггеÑÑ ÑаблиÑÑ, либо ÑолÑко полÑзоваÑелÑÑкие ÑÑиггеÑÑ (иÑклÑÑÐ°Ñ ÑгенеÑиÑованнÑе внÑÑÑиÑиÑÑемнÑе ÑÑиггеÑÑ Ð¾Ð³ÑаниÑений, напÑимеÑ, ÑÑиггеÑÑ, ÑеализÑÑÑие огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи или иÑклÑÑений). ÐÐ»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ вклÑÑÐµÐ½Ð¸Ñ ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑиÑиÑÑемнÑÑ ÑÑиггеÑов огÑаниÑений ÑÑебÑÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ; оÑклÑÑаÑÑ Ð¸Ñ ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ, Ñак как оÑевидно, ÑÑо невозможно гаÑанÑиÑоваÑÑ ÑелоÑÑноÑÑÑ Ð¾Ð³ÑаниÑений, еÑли ÑÑиггеÑÑ Ð½Ðµ ÑабоÑаÑÑ. Ðа Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑов Ñакже влиÑÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ session_replication_role. ÐклÑÑÑннÑе без дополниÑелÑнÑÑ Ñказаний ÑÑиггеÑÑ Ð±ÑдÑÑ ÑÑабаÑÑваÑÑ, когда ÑÐ¾Ð»Ñ ÑепликаÑии â «origin» (по ÑмолÑаниÑ) или «local». ТÑиггеÑÑ, вклÑÑÑннÑе Ñказанием
ENABLE REPLICA, бÑдÑÑ ÑÑабаÑÑваÑÑ, ÑолÑко еÑли ÑекÑÑий Ñежим ÑеанÑа â «replica», а поÑле ÑказаниÑENABLE ALWAYSÑÑиггеÑÑ ÑÑабаÑÑваÑÑ Ð²Ð½Ðµ завиÑимоÑÑи Ð¾Ñ ÑекÑÑего Ñежима ÑепликаÑии.ÐÑа команда запÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
SHARE ROW EXCLUSIVE.DISABLE/ENABLE [ REPLICA | ALWAYS ] RULEÐÑи ÑоÑÐ¼Ñ Ð½Ð°ÑÑÑаиваÑÑ ÑÑабаÑÑвание пÑавил пеÑезапиÑи, оÑноÑÑÑÐ¸Ñ ÑÑ Ðº ÑаблиÑе. ÐÑклÑÑÑнное пÑавило ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑиÑÑеме, но не пÑименÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿ÐµÑепиÑÑÐ²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа. Ðо ÑÑÑи ÑÑи опеÑаÑии Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ Ð¾Ð¿ÐµÑаÑиÑм вклÑÑениÑ/оÑклÑÑÐµÐ½Ð¸Ñ ÑÑиггеÑов. Ðднако ÑÑо не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° пÑавила
ON SELECTâ они пÑименÑÑÑÑÑ Ð²Ñегда, ÑÑÐ¾Ð±Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñодолжали ÑабоÑаÑÑ, даже в ÑеанÑÐ°Ñ , иÑполнÑÑÑÐ¸Ñ Ð½Ðµ оÑновнÑÑ ÑÐ¾Ð»Ñ ÑепликаÑии.DISABLE/ENABLE ROW LEVEL SECURITYÐÑи ÑоÑÐ¼Ñ ÑпÑавлÑÑÑ Ð¿Ñименением оÑноÑÑÑÐ¸Ñ ÑÑ Ðº ÑаблиÑе полиÑик заÑиÑÑ ÑÑÑок. ÐÑли заÑиÑа вклÑÑаеÑÑÑ, но полиÑики Ð´Ð»Ñ ÑаблиÑÑ Ð½Ðµ опÑеделенÑ, пÑименÑеÑÑÑ Ð¿Ð¾Ð»Ð¸Ñика запÑеÑа доÑÑÑпа по ÑмолÑаниÑ. ÐамеÑÑÑе, ÑÑо полиÑики могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð´Ð»Ñ ÑаблиÑÑ, даже еÑли заÑиÑа на ÑÑовне ÑÑÑок оÑклÑÑена â в ÑÑом ÑлÑÑае полиÑики ÐРпÑименÑÑÑÑÑ Ð¸ Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑÑÑÑÑ. См. Ñакже CREATE POLICY.
NO FORCE/FORCE ROW LEVEL SECURITYÐÑи ÑоÑÐ¼Ñ ÑпÑавлÑÑÑ Ð¿Ñименением оÑноÑÑÑÐ¸Ñ ÑÑ Ðº ÑаблиÑе полиÑик заÑиÑÑ ÑÑÑок, когда полÑзоваÑÐµÐ»Ñ ÑвлÑеÑÑÑ ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем. ÐÑли ÑÑо поведение вклÑÑаеÑÑÑ, полиÑики заÑиÑÑ Ð½Ð° ÑÑовне ÑÑÑок бÑдÑÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð¸ на владелÑÑа ÑаблиÑÑ. ÐÑли оно оÑклÑÑено (по ÑмолÑаниÑ), заÑиÑа на ÑÑовне ÑÑÑок не бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð½Ð° полÑзоваÑелÑ, ÑвлÑÑÑегоÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑаблиÑÑ. См. Ñакже CREATE POLICY.
CLUSTER ONÐÑа ÑоÑма вÑбиÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑий CLUSTER. СобÑÑвенно клаÑÑеÑизаÑÐ¸Ñ ÑаблиÑÑ Ð¿Ñи ÑÑом не вÑполнÑеÑÑÑ.
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов клаÑÑеÑизаÑии запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVE.SET WITHOUT CLUSTERÐÑа ÑоÑма ÑдалÑÐµÑ Ð¿Ð¾Ñледнее заданное Ñказание индекÑа Ð´Ð»Ñ CLUSTER. ÐÑ Ð´ÐµÐ¹ÑÑвие оÑÑазиÑÑÑ Ð½Ð° бÑдÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑиÑÑ ÐºÐ»Ð°ÑÑеÑизаÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð½Ðµ бÑÐ´ÐµÑ Ð·Ð°Ð´Ð°Ð½ индекÑ.
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов клаÑÑеÑизаÑии запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVE.SET WITH OIDSÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑаблиÑÑ ÑиÑÑемнÑй ÑÑолбеÑ
oid(Ñм. Раздел 5.4). ÐÑли в ÑаблиÑе Ñже еÑÑÑ Ñакой ÑÑолбеÑ, она не Ð´ÐµÐ»Ð°ÐµÑ Ð½Ð¸Ñего.ÐамеÑÑÑе, ÑÑо ÑÑо не ÑавнознаÑно команде
ADD COLUMN oid oid(ÑÑа команда Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ Ð½Ðµ ÑиÑÑемнÑй, а обÑÑнÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим именемoid).SET WITHOUT OIDSÐÑа ÑоÑма ÑдалÑÐµÑ Ð¸Ð· ÑаблиÑÑ ÑиÑÑемнÑй ÑÑолбеÑ
oid. ÐÑо в ÑоÑноÑÑи ÑавнознаÑноDROP COLUMN oid RESTRICT, за иÑклÑÑением Ñого, ÑÑо в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ ÑÑолбÑаoidоÑибки не бÑдеÑ.SET TABLESPACEÐÑа ÑоÑма менÑÐµÑ ÑаблиÑное пÑоÑÑÑанÑÑво ÑаблиÑÑ Ð½Ð° заданное и пеÑемеÑÐ°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑвÑзаннÑе Ñ ÑаблиÑей, в новое пÑоÑÑÑанÑÑво. ÐндекÑÑ ÑаблиÑÑ, еÑли они имеÑÑÑÑ, не пеÑемеÑаÑÑÑÑ; однако Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑемеÑÑиÑÑ Ð¾ÑделÑно дополниÑелÑнÑми командами
SET TABLESPACE. ФоÑмаALL IN TABLESPACEпозволÑÐµÑ Ð¿ÐµÑенеÑÑи в дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво вÑе ÑаблиÑÑ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , пÑи ÑÑом она ÑнаÑала блокиÑÑÐµÑ Ð²Ñе ÑаблиÑÑ, а заÑем пеÑеноÑÐ¸Ñ ÐºÐ°Ð¶Ð´ÑÑ Ð¸Ð· Ð½Ð¸Ñ . ÐÑа ÑоÑма Ñакже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑказаниеOWNED BY, Ñ ÐºÐ¾ÑоÑÑм пеÑемеÑаÑÑÑÑ ÑолÑко ÑаблиÑÑ Ñказанного владелÑÑа. ÐÑли Ñказан паÑамеÑÑNOWAIT, команда завеÑÑиÑÑÑ Ð¾Ñибкой, еÑли не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²Ñе ÑÑебÑемÑе блокиÑовки немедленно. ÐамеÑÑÑе, ÑÑо ÑиÑÑемнÑе каÑалоги ÑÑа ÑоÑма не пеÑемеÑаеÑ; еÑли ÑÑебÑеÑÑÑ Ð¿ÐµÑемеÑÑиÑÑ Ð¸Ñ , ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑALTER DATABASEили ÑвнÑе вÑзовÑALTER TABLE. ÐÑноÑениÑinformation_schemaне ÑÑиÑаÑÑÑÑ ÑаÑÑÑÑ ÑиÑÑемнÑÑ ÐºÐ°Ñалогов и Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð¿ÐµÑемеÑениÑ. См. Ñакже CREATE TABLESPACE.SET { LOGGED | UNLOGGED }ÐÑа ÑоÑма менÑÐµÑ Ñ Ð°ÑакÑеÑиÑÑÐ¸ÐºÑ Ð¶ÑÑналиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑÑ, Ð´ÐµÐ»Ð°ÐµÑ ÑаблиÑÑ Ð¶ÑÑналиÑÑемой/нежÑÑналиÑÑемой, ÑооÑвеÑÑÑвенно (Ñм.
UNLOGGED). РвÑеменной ÑаблиÑе она непÑименима.SET (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] )ÐÑа ÑоÑма менÑÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко паÑамеÑÑов Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐодÑобнее допÑÑÑимÑе паÑамеÑÑÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² ÐаÑамеÑÑÑ Ñ ÑанениÑ. ÐамеÑÑÑе, ÑÑо ÑÑа команда не менÑÐµÑ ÑодеÑжимое ÑаблиÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾; в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑезапиÑаÑÑ ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй ÑÑÑекÑ. ÐÑо можно ÑделаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ VACUUM FULL, CLUSTER или одной из ÑоÑм
ALTER TABLE, пÑинÑдиÑелÑно пеÑезапиÑÑваÑÑÐ¸Ñ ÑаблиÑÑ.ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов ÑакÑоÑа Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸ авÑооÑиÑÑки запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVE.ÐÑимеÑание
ХоÑÑ
CREATE TABLEпозволÑÐµÑ ÑказаÑÑOIDSв ÑинÑакÑиÑеWITH (,паÑамеÑÑ_Ñ ÑанениÑ)ALTER TABLEне воÑпÑинимаеÑOIDSкак паÑамеÑÑ Ñ ÑанениÑ. ÐоÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð°ÑакÑеÑиÑÑики OID ÑледÑÐµÑ Ð¿ÑименÑÑÑ ÑоÑмÑSET WITH OIDSиSET WITHOUT OIDS.RESET (паÑамеÑÑ_Ñ ÑанениÑ[, ... ] )ÐÑа ÑоÑма ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко паÑамеÑÑов Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ðº знаÑениÑм по ÑмолÑаниÑ. Ðак и Ñ
SET, Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑезапиÑаÑÑ ÑаблиÑÑ.INHERITÑаблиÑа_ÑодиÑелÑÐÑа ÑоÑма назнаÑÐ°ÐµÑ ÑелевÑÑ ÑаблиÑÑ Ð¿Ð¾Ñомком заданной ÑодиÑелÑÑкой ÑаблиÑÑ. ÐпоÑледÑÑвии запÑоÑÑ Ðº ÑодиÑелÑÑкой ÑаблиÑе бÑдÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð·Ð°Ð¿Ð¸Ñи и Ñелевой ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑаблиÑа могла ÑÑаÑÑ Ð¿Ð¾Ñомком, она должна ÑодеÑжаÑÑ Ñе же ÑÑолбÑÑ, ÑÑо и ÑодиÑелÑÑÐºÐ°Ñ (Ñ Ð¾ÑÑ Ð¾Ð½Ð° Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¸ дополниÑелÑнÑе ÑÑолбÑÑ). СÑолбÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸, еÑли в ÑодиÑелÑÑкой ÑаблиÑе какие-Ñо из Ð½Ð¸Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð³ÑаниÑение
NOT NULL, они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð³ÑаниÑениеNOT NULLи в ÑаблиÑе-поÑомке.Также в ÑаблиÑе-поÑомке Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð²Ñе огÑаниÑениÑ
CHECKÑодиÑелÑÑкой ÑаблиÑÑ, за иÑклÑÑением ненаÑледÑемÑÑ (Ñо еÑÑÑ ÑозданнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER TABLE ... ADD CONSTRAINT ... NO INHERIT), коÑоÑÑе игноÑиÑÑÑÑÑÑ; пÑи ÑÑом вÑе ÑооÑвеÑÑÑвÑÑÑие огÑаниÑÐµÐ½Ð¸Ñ Ð² ÑаблиÑе-поÑомке не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð½ÐµÐ½Ð°ÑледÑемÑми. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð³ÑаниÑениÑUNIQUE,PRIMARY KEYиFOREIGN KEYне ÑÑиÑÑваÑÑÑÑ, но в бÑдÑÑем ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ.NO INHERITÑаблиÑа_ÑодиÑелÑÐÑа ÑоÑма ÑдалÑÐµÑ ÑелевÑÑ ÑаблиÑÑ Ð¸Ð· ÑпиÑка поÑомков Ñказанной ÑодиÑелÑÑкой ÑаблиÑÑ. РезÑлÑÑаÑÑ Ð·Ð°Ð¿ÑоÑов к ÑодиÑелÑÑкой ÑаблиÑе поÑле ÑÑого не бÑдÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð·Ð°Ð¿Ð¸Ñи, взÑÑÑе из Ñелевой ÑаблиÑÑ.
OFимÑ_ÑипаÐÑа ÑоÑма ÑвÑзÑÐ²Ð°ÐµÑ ÑаблиÑÑ Ñ ÑоÑÑавнÑм Ñипом, как еÑли Ð±Ñ Ð¾Ð½Ð° бÑла ÑÑоÑмиÑована командой
CREATE TABLE OF. ÐÑи ÑÑом ÑпиÑок имÑн и Ñипов ÑÑолбÑов должен ÑоÑно ÑооÑвеÑÑÑвоваÑÑ ÑомÑ, ÑÑо обÑазÑÐµÑ ÑоÑÑавной Ñип; оÑлиÑие возможно в ÑиÑÑемном ÑÑолбÑеoid. ÐÑоме Ñого, ÑаблиÑа не должна бÑÑÑ Ð¿Ð¾Ñомком какой-либо дÑÑгой ÑаблиÑÑ. ÐÑи огÑаниÑÐµÐ½Ð¸Ñ Ð³Ð°ÑанÑиÑÑÑÑ, ÑÑо командаCREATE TABLE OFÐ¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑоздаÑÑ ÑаблиÑÑ Ñ Ñаким же опÑеделением.NOT OFÐÑа ÑоÑма ÑазÑÑÐ²Ð°ÐµÑ ÑвÑÐ·Ñ ÑипизиÑованной ÑаблиÑÑ Ñ ÐµÑ Ñипом.
OWNERÐÑа ÑоÑма менÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑаблиÑÑ, поÑледоваÑелÑноÑÑи, пÑедÑÑавлениÑ, маÑеÑиализованного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑоÑонней ÑаблиÑÑ Ð½Ð° заданного полÑзоваÑелÑ.
REPLICA IDENTITYÐÑа ÑоÑма менÑÐµÑ Ð¸Ð½ÑоÑмаÑиÑ, запиÑÑваемÑÑ Ð² жÑÑнал пÑедзапиÑи Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии изменÑемÑÑ Ð¸Ð»Ð¸ ÑдалÑемÑÑ ÑÑÑок. ÐаннÑй паÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ ÑолÑко пÑи иÑполÑзовании логиÑеÑкой ÑепликаÑии. Ð Ñежиме
DEFAULT(по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ðµ ÑиÑÑемнÑÑ ÑаблиÑ) запиÑÑваеÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов пеÑвиÑного клÑÑа, еÑли он еÑÑÑ. Ð ÑежимеUSING INDEXзапиÑÑваÑÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов, ÑоÑÑавлÑÑÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñй индекÑ, коÑоÑÑй должен бÑÑÑ ÑникалÑнÑм, не ÑаÑÑиÑнÑм, не оÑложеннÑм и вклÑÑаÑÑ ÑолÑко ÑÑолбÑÑ, помеÑеннÑеNOT NULL. Ð ÑежимеFULLзапиÑÑваÑÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑÑолбÑов в ÑÑÑоке, а в ÑежимеNOTHING(по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑиÑÑемнÑÑ ÑаблиÑ) Ð½Ð¸ÐºÐ°ÐºÐ°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑаÑой ÑÑÑоке не запиÑÑваеÑÑÑ. Ðо вÑÐµÑ ÑлÑÑаÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² жÑÑнал, ÑолÑко еÑли как минимÑм в одном ÑÑолбÑе из ÑÐµÑ , ÑÑо Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°Ð¿Ð¸ÑанÑ, пÑоизоÑли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² новой ÑÑÑоке.RENAMEФоÑмÑ
RENAMEменÑÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ (или индекÑа, поÑледоваÑелÑноÑÑи, пÑедÑÑавлениÑ, маÑеÑиализованного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑоÑонней ÑаблиÑÑ), Ð¸Ð¼Ñ Ð¾ÑделÑного ÑÑолбÑа ÑаблиÑÑ Ð¸Ð»Ð¸ Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ. Ðа Ñ ÑанимÑе даннÑе ÑÑо не влиÑеÑ.SET SCHEMAÐÑа ÑоÑма пеÑемеÑÐ°ÐµÑ ÑаблиÑÑ Ð² дÑÑгÑÑ ÑÑ ÐµÐ¼Ñ. ÐмеÑÑе Ñ ÑаблиÑей пеÑемеÑаÑÑÑÑ ÑвÑзаннÑе Ñ Ð½ÐµÐ¹ индекÑÑ Ð¸ огÑаниÑениÑ, а Ñакже поÑледоваÑелÑноÑÑи, пÑинадлежаÑие ÑÑолбÑам ÑаблиÑÑ.
ÐÑе Ð²Ð¸Ð´Ñ ALTER TABLE, дейÑÑвÑÑÑие на Ð¾Ð´Ð½Ñ ÑаблиÑÑ, кÑоме RENAME и SET SCHEMA, можно обÑединиÑÑ Ð² ÑпиÑок множеÑÑвеннÑÑ
изменений и пÑимениÑÑ Ð²Ð¼ÐµÑÑе. ÐапÑимеÑ, можно добавиÑÑ Ð½ÐµÑколÑко ÑÑолбÑов и/или измениÑÑ Ñип ÑÑолбÑов в одной команде. ÐÑо оÑобенно полезно Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
ÑаблиÑ, Ñак как вÑÑ ÑаблиÑа обÑабаÑÑваеÑÑÑ Ð·Ð° один пÑоÑ
од.
ÐÑполниÑÑ ALTER TABLE Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑей ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ Ð¸Ð»Ð¸ ÑаблиÑное пÑоÑÑÑанÑÑво ÑаблиÑÑ, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме или ÑаблиÑном пÑоÑÑÑанÑÑве. ЧÑÐ¾Ð±Ñ ÑделаÑÑ ÑаблиÑÑ Ð¿Ð¾Ñомком дÑÑгой ÑаблиÑÑ, нÑжно бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем и ÑодиÑелÑÑкой ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме ÑаблиÑÑ. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ ÑаблиÑÑ. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑаблиÑÑ Ð² лÑбом ÑлÑÑае.) ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÑÑолбеÑ, ÑмениÑÑ Ñип ÑÑолбÑа или пÑимениÑÑ Ð¿Ñедложение OF, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего Ñипа даннÑÑ
.
ÐаÑамеÑÑÑ
IF EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли ÑаблиÑа не ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание.
имÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) ÑÑÑеÑÑвÑÑÑей ÑаблиÑÑ, подлежаÑей изменениÑ. ÐÑли пеÑед именем ÑаблиÑÑ Ñказано
ONLY, изменÑеÑÑÑ ÑолÑко Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа. ÐезONLYизменÑеÑÑÑ Ð¸ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, и вÑе ÐµÑ Ð¿Ð¾Ñомки (еÑли ÑаковÑе еÑÑÑ). ÐоÑле имени ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñакже добавиÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑное Ñказание*, ÑÑÐ¾Ð±Ñ Ñвно обознаÑиÑÑ, ÑÑо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð²Ñе доÑеÑние ÑаблиÑÑ.имÑ_ÑÑолбÑаÐÐ¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ или ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
новое_имÑ_ÑÑолбÑаÐовое Ð¸Ð¼Ñ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
новое_имÑÐовое Ð¸Ð¼Ñ ÑаблиÑÑ.
Ñип_даннÑÑТип даннÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑолбÑа или новÑй Ñип даннÑÑ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
огÑаниÑение_ÑаблиÑÑÐовое огÑаниÑение ÑаблиÑÑ.
имÑ_огÑаниÑениÑÐÐ¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ или ÑÑÑеÑÑвÑÑÑего огÑаниÑениÑ.
CASCADEÐвÑомаÑиÑеÑки ÑдалÑÑÑ Ð¾Ð±ÑекÑÑ, завиÑÑÑие Ð¾Ñ ÑдалÑемого ÑÑолбÑа или огÑаниÑÐµÐ½Ð¸Ñ (напÑимеÑ, пÑедÑÑавлениÑ, ÑодеÑжаÑие ÑÑÐ¾Ñ ÑÑолбеÑ), и, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, вÑе завиÑÑÑие Ð¾Ñ Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ (Ñм. Раздел 5.13).
RESTRICTÐÑказаÑÑ Ð² Ñдалении ÑÑолбÑа или огÑаниÑениÑ, еÑли ÑÑÑеÑÑвÑÑÑ Ð·Ð°Ð²Ð¸ÑÑÑие Ð¾Ñ Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ. ÐÑо поведение по ÑмолÑаниÑ.
имÑ_ÑÑиггеÑаÐÐ¼Ñ Ð²ÐºÐ»ÑÑаемого или оÑклÑÑаемого ÑÑиггеÑа.
ALLÐÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð²Ñе ÑÑиггеÑÑ, пÑинадлежаÑие ÑаблиÑе. (ÐÐ»Ñ ÑÑого ÑÑебÑÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ, еÑли в ÑиÑле ÑÑÐ¸Ñ ÑÑиггеÑов оказÑваÑÑÑÑ ÑгенеÑиÑованнÑе внÑÑÑиÑиÑÑемнÑе ÑÑиггеÑÑ Ð¸ÑклÑÑений, напÑÐ¸Ð¼ÐµÑ Ñе, ÑÑо ÑеализÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и иÑклÑÑений.)
USERÐÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð²Ñе ÑÑиггеÑÑ, пÑинадлежаÑие ÑаблиÑе, за иÑклÑÑением ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑиÑиÑÑемнÑÑ ÑÑиггеÑов иÑклÑÑений, напÑимеÑ, ÑÐµÑ , ÑÑо ÑеализÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и иÑклÑÑений.
имÑ_индекÑаÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего индекÑа.
паÑамеÑÑ_Ñ ÑанениÑÐÐ¼Ñ Ð¿Ð°ÑамеÑÑа Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ
знаÑениеÐовое знаÑение паÑамеÑÑа Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑиÑло или ÑÑÑока, в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа.
ÑаблиÑа_ÑодиÑелÑРодиÑелÑÑÐºÐ°Ñ ÑаблиÑа, Ñ ÐºÐ¾ÑоÑой бÑÐ´ÐµÑ ÑÑÑановлена или ÑазоÑвана ÑвÑÐ·Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ.
новÑй_владелеÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем ÑаблиÑÑ.
новое_Ñабл_пÑоÑÑÑанÑÑвоÐÐ¼Ñ ÑаблиÑного пÑоÑÑÑанÑÑва, в коÑоÑое бÑÐ´ÐµÑ Ð¿ÐµÑемеÑена ÑаблиÑа.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, в коÑоÑÑÑ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑемеÑена ÑаблиÑа.
ÐамеÑаниÑ
ÐлÑÑевое Ñлово COLUMN не неÑÑÑ ÑмÑÑловой нагÑÑзки и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено.
Ðогда ÑÑÐ¾Ð»Ð±ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ADD COLUMN, во вÑеÑ
ÑÑÑеÑÑвÑÑÑиÑ
в ÑаблиÑе ÑÑÑокаÑ
ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð½Ð¸ÑиализиÑÑеÑÑÑ Ð·Ð½Ð°Ñением по ÑмолÑÐ°Ð½Ð¸Ñ (или NULL, еÑли пÑедложение DEFAULT Ð´Ð»Ñ ÑÑолбÑа оÑÑÑÑÑÑвÑеÑ). ÐÑли пÑедложение DEFAULT оÑÑÑÑÑÑвÑеÑ, ÑÑо ÑводиÑÑÑ ÑолÑко к Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼ÐµÑаданнÑÑ
, непоÑÑедÑÑвенного Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑаблиÑÑ Ð½Ðµ пÑоиÑÑ
одиÑ; добавленнÑе знаÑÐµÐ½Ð¸Ñ NULL вÑводÑÑÑÑ Ð¿Ñи ÑÑении.
Ðобавление ÑÑолбÑа Ñ Ð¿Ñедложением DEFAULT или изменение Ñипа ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа влеÑÑÑ Ð·Ð° Ñобой пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ Ð¸ ÐµÑ Ð¸Ð½Ð´ÐµÐºÑов. Ðо возможно иÑклÑÑение пÑи Ñмене Ñипа ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа: еÑли пÑедложение USING не менÑÐµÑ ÑодеÑжимое ÑÑолбÑа и ÑÑаÑÑй Ñип двоиÑно пÑиводиÑÑÑ Ðº Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¸Ð»Ð¸ ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð³ÑаниÑеннÑм доменом повеÑÑ
нового Ñипа, пеÑезапиÑÑ ÑаблиÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ; Ñ
оÑÑ Ð²Ñе индекÑÑ Ñ Ð·Ð°ÑÑонÑÑÑми ÑÑолбÑами вÑÑ Ð¶Ðµ ÑÑебÑеÑÑÑ Ð¿ÐµÑеÑÑÑоиÑÑ. ÐÑи добавлении или Ñдалении ÑиÑÑемного ÑÑолбÑа oid Ñакже необÑ
одима пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ. ÐеÑеÑÑÑоение болÑÑиÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¸/или иÑ
индекÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÐµÑÑма длиÑелÑной пÑоÑедÑÑой, коÑоÑÐ°Ñ Ð¿Ñи ÑÑом вÑеменно ÑÑебÑÐµÑ Ð²Ð´Ð²Ð¾Ðµ болÑÑе меÑÑа на диÑке.
Ðобавление огÑаниÑений CHECK или NOT NULL влеÑÑÑ Ð·Ð° Ñобой необÑ
одимоÑÑÑ Ð¿ÑоÑканиÑоваÑÑ ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, ÑÑо вÑе ÑÑÑеÑÑвÑÑÑие ÑÑÑоки ÑдовлеÑвоÑÑÑÑ Ð¾Ð³ÑаниÑениÑ, но пеÑезапиÑÑваÑÑ ÑаблиÑÑ Ð¿Ñи ÑÑом не ÑÑебÑеÑÑÑ.
ÐозможноÑÑÑ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑва изменений в Ð¾Ð´Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER TABLE полезна в оÑновном Ñем, ÑÑо позволÑÐµÑ ÑовмеÑÑиÑÑ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ пеÑезапиÑи ÑаблиÑÑ, ÑÑебÑемÑе ÑÑим опеÑаÑиÑм, и вÑполниÑÑ Ð¸Ñ
за один пÑоÑ
од.
СканиÑование болÑÑой ÑаблиÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки нового внеÑнего клÑÑа или огÑаниÑениÑ-пÑовеÑки Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð´Ð»Ð¸ÑелÑное вÑÐµÐ¼Ñ Ð¸ бÑÐ´ÐµÑ Ð¿ÑепÑÑÑÑвоваÑÑ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð´ÑÑгиÑ
изменений до ÑикÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER TABLE ADD CONSTRAINT. ÐÑновное пÑедназнаÑение ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ NOT VALID пÑи добавлении огÑаниÑÐµÐ½Ð¸Ñ ÑоÑÑÐ¾Ð¸Ñ Ð² ÑменÑÑении влиÑÐ½Ð¸Ñ ÑÑой опеÑаÑии на паÑаллелÑнÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. С Ñказанием NOT VALID команда ADD CONSTRAINT не ÑканиÑÑÐµÑ ÑаблиÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°ÑикÑиÑована немедленно. ÐоÑле ÑÑого можно вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ VALIDATE CONSTRAINT, коÑоÑÐ°Ñ Ð¿ÑовеÑÐ¸Ñ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑÑÑоки на ÑооÑвеÑÑÑвие огÑаниÑениÑ. ÐÑа команда не бÑÐ´ÐµÑ Ð¿ÑепÑÑÑÑвоваÑÑ Ð¿Ð°ÑаллелÑнÑм изменениÑм, Ñак как ей извеÑÑно, ÑÑо в дÑÑгиÑ
ÑÑанзакÑиÑÑ
Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑемÑÑ
или изменÑемÑÑ
ÑÑÑок огÑаниÑение Ñже бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ; пÑовеÑиÑÑ Ð½Ñжно ÑолÑко Ñже ÑÑÑеÑÑвÑÑÑие ÑÑÑоки. Таким обÑазом, Ð´Ð»Ñ ÑÑой пÑовеÑки в ÑаблиÑе заÑÑебÑеÑÑÑ ÑолÑко блокиÑовка SHARE UPDATE EXCLUSIVE. (ÐÑли огÑаниÑение ÑвлÑеÑÑÑ Ð²Ð½ÐµÑним клÑÑом, Ñо в Ñелевой ÑаблиÑе ÑÑого клÑÑа Ñакже заÑÑебÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка ROW SHARE.) Ðомимо опÑимизаÑии паÑаллелÑной ÑабоÑÑ, Ñказание NOT VALID и пÑедложение VALIDATE CONSTRAINT полезно в ÑлÑÑаÑÑ
, когда заведомо извеÑÑно, ÑÑо в ÑаблиÑе еÑÑÑ ÑÑÑоки, наÑÑÑаÑÑие огÑаниÑениÑ. ÐоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð½Ð¾Ð²Ñе недопÑÑÑимÑе ÑÑÑоки бÑÐ´ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, а вÑе ÑÑÑеÑÑвÑÑÑие пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ ÑазÑеÑаÑÑÑÑ Ð² Ñдобное вÑемÑ, пока VALIDATE CONSTRAINT не вÑполниÑÑÑ ÑÑпеÑно.
ФоÑма DROP COLUMN не ÑдалÑÐµÑ ÑÑÐ¾Ð»Ð±ÐµÑ ÑизиÑеÑки, а пÑоÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ невидимÑм Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий SQL. ÐÑи поÑледÑÑÑиÑ
опеÑаÑиÑÑ
Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð·Ð½Ð°Ñение NULL. Таким обÑазом, Ñдаление ÑÑолбÑа вÑполнÑеÑÑÑ Ð±ÑÑÑÑо, но пÑи ÑÑом ÑÐ°Ð·Ð¼ÐµÑ ÑаблиÑÑ Ð½Ð° диÑке не ÑменÑÑаеÑÑÑ, Ñак как пÑоÑÑÑанÑÑво, занимаемое ÑдалÑннÑм ÑÑолбÑом, не вÑÑвобождаеÑÑÑ. ÐÑо пÑоÑÑÑанÑÑво бÑÐ´ÐµÑ Ð¾Ñвобождено Ñо вÑеменем, по меÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑеÑÑвÑÑÑиÑ
ÑÑÑок. (ÐÑи Ñдалении ÑиÑÑемного ÑÑолбÑа oid ÑÑо поведение не наблÑдаеÑÑÑ, Ñак как немедленно вÑполнÑеÑÑÑ Ð¿ÐµÑезапиÑÑ ÑаблиÑÑ.)
ЧÑÐ¾Ð±Ñ Ð¿ÑинÑдиÑелÑно вÑÑвободиÑÑ Ð¿ÑоÑÑÑанÑÑво, занимаемое ÑÑолбÑом, коÑоÑÑй бÑл ÑдалÑн, можно вÑполниÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð· ÑоÑм ALTER TABLE, пÑоизводÑÑиÑ
пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ. Ð ÑезÑлÑÑаÑе вÑе ÑÑÑоки бÑдÑÑ Ð²Ð¾ÑÑÐ¾Ð·Ð´Ð°Ð½Ñ Ñак, ÑÑо в ÑдалÑнном ÑÑолбÑе бÑÐ´ÐµÑ ÑодеÑжаÑÑÑÑ NULL.
ÐеÑезапиÑÑваÑÑие ÑоÑÐ¼Ñ ALTER TABLE небезопаÑÐ½Ñ Ñ ÑоÑки зÑÐµÐ½Ð¸Ñ MVCC. ÐоÑле пеÑезапиÑи ÑаблиÑа бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ð¿ÑÑÑой Ð´Ð»Ñ Ð¿Ð°ÑаллелÑнÑÑ
ÑÑанзакÑий, еÑли они ÑабоÑаÑÑ Ñо Ñнимком, полÑÑеннÑм до моменÑа пеÑезапиÑи. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 13.5.
Ð Ñказании USING пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ SET DATA TYPE на Ñамом деле можно запиÑаÑÑ Ð²ÑÑажение Ñо ÑÑаÑÑми знаÑениÑми ÑÑÑоки; Ñо еÑÑÑ, оно Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ ÐºÐ°Ðº на пÑеобÑазÑемÑе ÑÑолбÑÑ, Ñак и на дÑÑгие. ÐÑо позволÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð² SET DATA TYPE оÑÐµÐ½Ñ Ð¾Ð±Ñие пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÐ²Ð¸Ð´Ñ Ñакой гибкоÑÑи, вÑÑажение USING не пÑименÑеÑÑÑ Ðº знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÑолбÑа (еÑли Ñаковое еÑÑÑ); ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ конÑÑанÑнÑм вÑÑажением, ÑÑо ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑо ознаÑаеÑ, ÑÑо в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñвного пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑаÑого Ñипа новомÑ, SET DATA TYPE Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑпÑавиÑÑÑÑ Ñ Ð¿ÑеобÑазованием знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, неÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо пÑименÑеÑÑÑ Ð¿Ñедложение USING. Ð ÑÑиÑ
ÑлÑÑаÑÑ
нÑжно ÑдалиÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ DROP DEFAULT, вÑполниÑÑ ALTER TYPE, а заÑем Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ SET DEFAULT задаÑÑ Ð½Ð¾Ð²Ð¾Ðµ подÑ
одÑÑее знаÑение по ÑмолÑаниÑ. ÐодобнÑе ÑообÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð¸ в оÑноÑении индекÑов и огÑаниÑений Ñ ÑÑим ÑÑолбÑом.
ÐÑли Ñ ÑаблиÑÑ ÐµÑÑÑ Ð´Ð¾ÑеÑние ÑаблиÑÑ, добавлÑÑÑ, пеÑеименовÑваÑÑ Ð¸Ð»Ð¸ менÑÑÑ Ñип ÑÑолбÑа, либо пеÑеименовÑваÑÑ Ð½Ð°ÑледÑемое огÑаниÑение в ÑодиÑелÑÑкой ÑаблиÑе, не Ð´ÐµÐ»Ð°Ñ Ñого же Ñамого во вÑеÑ
доÑеÑниÑ
ÑаблиÑаÑ
, нелÑзÑ. То еÑÑÑ, команда ALTER TABLE ONLY вÑполнена не бÑдеÑ. ÐÑо гаÑанÑиÑÑеÑ, ÑÑо доÑеÑние ÑаблиÑÑ Ð²Ñегда бÑдÑÑ ÑодеÑжаÑÑ Ñе же ÑÑолбÑÑ, ÑÑо и ÑодиÑелÑÑкаÑ.
РекÑÑÑÐ¸Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ DROP COLUMN ÑÐ´Ð°Ð»Ð¸Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð· доÑеÑней ÑаблиÑÑ, ÑолÑко еÑли ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ наÑледÑеÑÑÑ Ð¾Ñ ÐºÐ°ÐºÐ¸Ñ
-Ñо дÑÑгиÑ
ÑодиÑелей и не бÑла опÑеделÑн в доÑеÑней ÑаблиÑе незавиÑимо. ÐеÑекÑÑÑÐ¸Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ DROP COLUMN (Ñ. е., ALTER TABLE ONLY ... DROP COLUMN) никогда не ÑдалÑÐµÑ ÑнаÑледованнÑе ÑÑолбÑÑ, но вмеÑÑо ÑÑого помеÑÐ°ÐµÑ Ð¸Ñ
как незавиÑимо опÑеделÑннÑе, а не наÑледÑемÑе.
ÐейÑÑÐ²Ð¸Ñ TRIGGER, CLUSTER, OWNER и TABLESPACE никогда не ÑаÑпÑоÑÑÑанÑÑÑÑÑ ÑекÑÑÑивно на доÑеÑние ÑаблиÑÑ; Ñо еÑÑÑ, они вÑегда вÑполнÑÑÑÑÑ Ñак, как бÑдÑо Ñказано ONLY. ÐпеÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²ÑполнÑеÑÑÑ ÑекÑÑÑивно ÑолÑко Ð´Ð»Ñ Ð¾Ð³ÑаниÑений CHECK, не помеÑеннÑÑ
как NO INHERIT.
Ðакие-либо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ ÑиÑÑемного каÑалога не допÑÑкаÑÑÑÑ.
Ðа более подÑобнÑм опиÑанием допÑÑÑимÑÑ Ð¿Ð°ÑамеÑÑов обÑаÑиÑеÑÑ Ðº CREATE TABLE. ÐополниÑелÑно о наÑледовании можно ÑзнаÑÑ Ð² Ðлаве 5.
ÐÑимеÑÑ
Ðобавление в ÑаблиÑÑ ÑÑолбÑа Ñипа varchar:
ALTER TABLE distributors ADD COLUMN address varchar(30);
Удаление ÑÑолбÑа из ÑаблиÑÑ:
ALTER TABLE distributors DROP COLUMN address RESTRICT;
Ðзменение Ñипов двÑÑ ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÑолбÑов в одной опеÑаÑии:
ALTER TABLE distributors
ALTER COLUMN address TYPE varchar(80),
ALTER COLUMN name TYPE varchar(100);Смена Ñипа ÑелоÑиÑленного ÑÑолбÑа, ÑодеÑжаÑего вÑÐµÐ¼Ñ Ð² ÑÑиле Unix, на Ñип timestamp with time zone Ñ Ð¿Ñименением пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ USING:
ALTER TABLE foo
ALTER COLUMN foo_timestamp SET DATA TYPE timestamp with time zone
USING
timestamp with time zone 'epoch' + foo_timestamp * interval '1 second';То же Ñамое, но в ÑлÑÑае, когда Ñ ÑÑолбÑа еÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑаниÑ, не пÑиводимое авÑомаÑиÑеÑки к Ð½Ð¾Ð²Ð¾Ð¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ :
ALTER TABLE foo
ALTER COLUMN foo_timestamp DROP DEFAULT,
ALTER COLUMN foo_timestamp TYPE timestamp with time zone
USING
timestamp with time zone 'epoch' + foo_timestamp * interval '1 second',
ALTER COLUMN foo_timestamp SET DEFAULT now();ÐеÑеименование ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа:
ALTER TABLE distributors RENAME COLUMN address TO city;
ÐеÑеименование ÑÑÑеÑÑвÑÑÑей ÑаблиÑÑ:
ALTER TABLE distributors RENAME TO suppliers;
ÐеÑеименование ÑÑÑеÑÑвÑÑÑего огÑаниÑениÑ:
ALTER TABLE distributors RENAME CONSTRAINT zipchk TO zip_check;
Ðобавление в ÑÑÐ¾Ð»Ð±ÐµÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ NOT NULL:
ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
Удаление огÑаниÑÐµÐ½Ð¸Ñ NOT NULL из ÑÑолбÑа:
ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
Ðобавление огÑаниÑениÑ-пÑовеÑки в ÑаблиÑÑ Ð¸ вÑе ÐµÑ Ð¿Ð¾Ñомки:
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
Ðобавление огÑаниÑениÑ-пÑовеÑки ÑолÑко в ÑаблиÑÑ, но не в ÐµÑ Ð¿Ð¾Ñомки:
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5) NO INHERIT;
(Ðанное огÑаниÑение-пÑовеÑка не бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð¸ бÑдÑÑими поÑомками Ñоже.)
Удаление огÑаниÑениÑ-пÑовеÑки из ÑаблиÑÑ Ð¸ из вÑÐµÑ ÐµÑ Ð¿Ð¾Ñомков:
ALTER TABLE distributors DROP CONSTRAINT zipchk;
Удаление огÑаниÑениÑ-пÑовеÑки ÑолÑко из Ñамой ÑаблиÑÑ:
ALTER TABLE ONLY distributors DROP CONSTRAINT zipchk;
(ÐгÑаниÑение-пÑовеÑка оÑÑаÑÑÑÑ Ð²Ð¾ вÑÐµÑ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑаблиÑÐ°Ñ .)
Ðобавление в ÑаблиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address);
Ðобавление в ÑаблиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑим влиÑнием на ÑабоÑÑ Ð´ÑÑÐ³Ð¸Ñ :
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) NOT VALID; ALTER TABLE distributors VALIDATE CONSTRAINT distfk;
Ðобавление в ÑаблиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи (по неÑколÑким ÑÑолбÑам):
ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
Ðобавление в ÑаблиÑÑ Ð¿ÐµÑвиÑного клÑÑа Ñ Ð°Ð²ÑомаÑиÑеÑким именем (ÑÑÑиÑе, ÑÑо в ÑаблиÑе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑолÑко один пеÑвиÑнÑй клÑÑ):
ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
ÐеÑемеÑение ÑаблиÑÑ Ð² дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво:
ALTER TABLE distributors SET TABLESPACE fasttablespace;
ÐеÑемеÑение ÑаблиÑÑ Ð² дÑÑгÑÑ ÑÑ ÐµÐ¼Ñ:
ALTER TABLE myschema.distributors SET SCHEMA yourschema;
ÐеÑеÑоздание огÑаниÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвиÑного клÑÑа без блокиÑовки изменений в пÑоÑеÑÑе пеÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа:
CREATE UNIQUE INDEX CONCURRENTLY dist_id_temp_idx ON distributors (dist_id);
ALTER TABLE distributors DROP CONSTRAINT distributors_pkey,
ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX dist_id_temp_idx;СовмеÑÑимоÑÑÑ
ФоÑÐ¼Ñ ADD (без USING INDEX), DROP, SET DEFAULT и SET DATA TYPE (без USING) ÑооÑвеÑÑÑвÑÑÑ ÑÑандаÑÑÑ SQL. ÐÑÑгие ÑоÑÐ¼Ñ ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми ÑÑандаÑÑа SQL, ÑеализованнÑми в Postgres Pro. ÐÑоме Ñого, ÑаÑÑиÑением ÑвлÑеÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑказаÑÑ Ð² одной команде ALTER TABLE неÑколÑко опеÑаÑий изменениÑ.
ALTER TABLE DROP COLUMN позволÑÐµÑ ÑдалиÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑй ÑÑÐ¾Ð»Ð±ÐµÑ ÑаблиÑÑ Ð¸ оÑÑавиÑÑ ÑаблиÑÑ Ð±ÐµÐ· ÑÑолбÑов. ÐÑо ÑвлÑеÑÑÑ ÑаÑÑиÑением ÑÑандаÑÑа SQL, коÑоÑÑй не допÑÑÐºÐ°ÐµÑ ÑÑÑеÑÑвование ÑÐ°Ð±Ð»Ð¸Ñ Ñ Ð½ÑлÑм ÑÑолбÑов.