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 ] ALTER TABLE [ IF EXISTS ]имÑATTACH PARTITIONимÑ_ÑекÑии{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT } ALTER TABLE [ IF EXISTS ]имÑDETACH PARTITIONимÑ_ÑекÑии[ CONCURRENTLY | FINALIZE ] ALTER TABLE [ IF EXISTS ]имÑSPLIT PARTITIONимÑ_ÑекÑииINTO (PARTITIONимÑ_ÑекÑии1{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT }, PARTITIONимÑ_ÑекÑии2{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT } [, ...]) ALTER TABLE [ IF EXISTS ]имÑMERGE PARTITIONS (имÑ_ÑекÑии1,имÑ_ÑекÑии2[, ...]) INTOимÑ_ÑекÑииÐдедейÑÑÐ²Ð¸ÐµÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: 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 EXPRESSION AS (вÑÑажение) ALTER [ COLUMN ]имÑ_ÑÑолбÑаDROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ]имÑ_ÑÑолбÑаADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ (паÑамеÑÑÑ_поÑледоваÑелÑноÑÑи) ] ALTER [ COLUMN ]имÑ_ÑÑолбÑа{ SET GENERATED { ALWAYS | BY DEFAULT } | SETпаÑамеÑÑ_поÑледоваÑелÑноÑÑи| RESTART [ [ WITH ]пеÑезапÑÑк] } [...] ALTER [ COLUMN ]имÑ_ÑÑолбÑаDROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET STATISTICS {integer| DEFAULT } ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET (аÑÑибÑÑ=знаÑение[, ... ] ) ALTER [ COLUMN ]имÑ_ÑÑолбÑаRESET (аÑÑибÑÑ[, ... ] ) ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ALTER [ COLUMN ]имÑ_ÑÑолбÑаSET COMPRESSIONмеÑод_ÑжаÑиÑADDогÑаниÑение_ÑаблиÑÑ[ NOT VALID ] ADDогÑаниÑение_ÑаблиÑÑ_по_индекÑÑALTER CONSTRAINTимÑ_огÑаниÑениÑ[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] ALTER CONSTRAINTимÑ_огÑаниÑениÑ[ INHERIT | NO INHERIT ] 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 WITHOUT OIDS SET ACCESS METHOD {новÑй_меÑод_доÑÑÑпа| DEFAULT } SET TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑвоSET { LOGGED | UNLOGGED } SET (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] ) RESET (паÑамеÑÑ_Ñ ÑанениÑ[, ... ] ) INHERITÑаблиÑа_ÑодиÑелÑNO INHERITÑаблиÑа_ÑодиÑелÑOFимÑ_ÑипаNOT OF OWNER TO {новÑй_владелеÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER } REPLICA IDENTITY { DEFAULT | USING INDEXимÑ_индекÑа| FULL | NOTHING } иÑказание_гÑаниÑ_ÑекÑии: IN (вÑÑажение_гÑаниÑ_ÑекÑии[, ...] ) | FROM ( {вÑÑажение_гÑаниÑ_ÑекÑии| MINVALUE | MAXVALUE } [, ...] ) TO ( {вÑÑажение_гÑаниÑ_ÑекÑии| MINVALUE | MAXVALUE } [, ...] ) | WITH ( MODULUSÑиÑловаÑ_конÑÑанÑа, REMAINDERÑиÑловаÑ_конÑÑанÑа) иогÑаниÑение_ÑÑолбÑа: [ CONSTRAINTимÑ_огÑаниÑениÑ] { NOT NULL [ NO INHERIT ] | NULL | CHECK (вÑÑажение) [ NO INHERIT ] | DEFAULTвÑÑажение_по_ÑмолÑаниÑ| GENERATED ALWAYS AS (генеÑиÑÑÑÑее_вÑÑажение) [ STORED | VIRTUAL ] | GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ (паÑамеÑÑÑ_поÑледоваÑелÑноÑÑи) ] | UNIQUE [ NULLS [ NOT ] DISTINCT ]паÑамеÑÑÑ_индекÑа| PRIMARY KEYпаÑамеÑÑÑ_индекÑа| REFERENCESÑелеваÑ_ÑаблиÑа[ (Ñелевой_ÑÑолбеÑ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETEÑÑÑлоÑное_дейÑÑвие] [ ON UPDATEÑÑÑлоÑное_дейÑÑвие] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] иогÑаниÑение_ÑаблиÑÑ: [ CONSTRAINTимÑ_огÑаниÑениÑ] { CHECK (вÑÑажение) [ NO INHERIT ] | NOT NULLимÑ_ÑÑолбÑа[ NO INHERIT ] | UNIQUE [ NULLS [ NOT ] DISTINCT ] (имÑ_ÑÑолбÑа[, ... ] [,имÑ_ÑÑолбÑаWITHOUT OVERLAPS ] )паÑамеÑÑÑ_индекÑа| PRIMARY KEY (имÑ_ÑÑолбÑа[, ... ] [,имÑ_ÑÑолбÑаWITHOUT OVERLAPS ] )паÑамеÑÑÑ_индекÑа| EXCLUDE [ USINGиндекÑнÑй_меÑод] (ÑлеменÑ_иÑклÑÑениÑWITHопеÑаÑоÑ[, ... ] )паÑамеÑÑÑ_индекÑа[ WHERE (пÑедикаÑ) ] | FOREIGN KEY (имÑ_ÑÑолбÑа[, ... ] [, PERIODимÑ_ÑÑолбÑа] ) REFERENCESÑелеваÑ_ÑаблиÑа[ (Ñелевой_ÑÑолбеÑ[, ... ] [, PERIODÑелевой_ÑÑолбеÑ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETEÑÑÑлоÑное_дейÑÑвие] [ ON UPDATEÑÑÑлоÑное_дейÑÑвие] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] иогÑаниÑение_ÑаблиÑÑ_по_индекÑÑ: [ CONSTRAINTимÑ_огÑаниÑениÑ] { UNIQUE | PRIMARY KEY } USING INDEXимÑ_индекÑа[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]паÑамеÑÑÑ_индекÑав огÑаниÑениÑÑUNIQUE,PRIMARY KEYиEXCLUDE: [ INCLUDE (имÑ_ÑÑолбÑа[, ... ] ) ] [ WITH (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] ) ] [ USING INDEX TABLESPACEÑабл_пÑоÑÑÑанÑÑво]ÑлеменÑ_иÑклÑÑениÑв огÑаниÑенииEXCLUDE: {имÑ_ÑÑолбÑа| (вÑÑажение) } [ COLLATEпÑавило_ÑоÑÑиÑовки] [клаÑÑ_опеÑаÑоÑов[ (паÑамеÑÑ_клаÑÑа_оп=знаÑение[, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]ÑÑÑлоÑное_дейÑÑвиев огÑаниÑенииFOREIGN KEY/REFERENCES: { NO ACTION | RESTRICT | CASCADE | SET NULL [ (имÑ_ÑÑолбÑа[, ... ] ) ] | SET DEFAULT [ (имÑ_ÑÑолбÑа[, ... ] ) ] }
ÐпиÑание
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ÑÑановиÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм, еÑли неÑвное пÑиведение или пÑиÑваивание Ñ Ð¿Ñиведением ÑÑаÑого Ñипа к Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð½Ðµ опÑеделено.ÐÑи изменении Ñипа ÑÑолбÑа ÑÑаÑиÑÑика ÑÑолбÑа ÑдалÑеÑÑÑ, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ñле ÑÑой опеÑаÑии Ð´Ð»Ñ ÑаблиÑÑ ÑекомендÑеÑÑÑ Ð²ÑполниÑÑ
ANALYZE. ÐÐ»Ñ Ð²Ð¸ÑÑÑалÑного генеÑиÑÑемого ÑÑолбÑа вÑполнениеANALYZEне ÑÑебÑеÑÑÑ, поÑколÑÐºÑ Ñакие ÑÑолбÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не ÑодеÑÐ¶Ð°Ñ ÑÑаÑиÑÑики.SET/DROP DEFAULT#ÐÑи ÑоÑÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа (Ñдаление ÑавноÑилÑно ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ NULL в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ). ÐовÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑименÑÑÑÑÑ ÑолÑко пÑи поÑледÑÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ
INSERTилиUPDATE; Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ оÑÑажаÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÐ°Ñ , Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð² ÑаблиÑе.SET/DROP NOT NULL#ÐÑи ÑоÑÐ¼Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL или неÑ.
Указание
SET NOT NULLможно пÑимениÑÑ Ðº ÑÑолбÑÑ, ÑолÑко еÑли ни одна из запиÑей ÑаблиÑÑ Ð½Ðµ ÑодеÑÐ¶Ð¸Ñ Ð² ÑÑом ÑÑолбÑе знаÑениеNULL. ÐбÑÑно ÑÑа пÑовеÑка пÑоизводиÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÑполнениÑALTER TABLEи ÑÑебÑÐµÑ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñей ÑаблиÑÑ, еÑли ÑолÑко не ÑказаноNOT VALID; однако в ÑлÑÑае налиÑÐ¸Ñ Ð¾Ð³ÑаниÑенийCHECK, гаÑанÑиÑÑÑÑÐ¸Ñ Ð¾ÑÑÑÑÑÑвиеNULL, и пÑи ÑÑловии, ÑÑо ÑÑи огÑаниÑÐµÐ½Ð¸Ñ Ð½Ðµ ÑдалÑÑÑÑÑ Ð² Ñой же команде, ÑканиÑование ÑаблиÑÑ Ð¿ÑопÑÑкаеÑÑÑ. ÐÑли Ñ ÑÑолбÑа имееÑÑÑ Ð½ÐµÑабоÑее огÑаниÑениеNOT NULL, опеÑаÑоÑSET NOT NULLпÑовеÑÑÐµÑ ÐµÐ³Ð¾ коÑÑекÑноÑÑÑ.ÐÑли Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑвлÑеÑÑÑ ÑекÑией, опеÑаÑиÑ
DROP NOT NULLнелÑÐ·Ñ Ð²ÑполниÑÑ Ð´Ð»Ñ ÑÑолбÑа, еÑли он опÑеделÑн Ñ Ñ Ð°ÑакÑеÑиÑÑикойNOT NULLв ÑодиÑелÑÑкой ÑаблиÑе. ЧÑÐ¾Ð±Ñ ÑдалиÑÑ Ð¾Ð³ÑаниÑениеNOT NULLиз вÑÐµÑ ÑекÑий, вÑполниÑеDROP NOT NULLÐ´Ð»Ñ ÑодиÑелÑÑкой ÑаблиÑÑ. Ðаже еÑли огÑаниÑениеNOT NULLв ÑодиÑелÑÑкой ÑаблиÑе оÑÑÑÑÑÑвÑеÑ, пÑи желании Ñакое огÑаниÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾ в оÑделÑнÑе ÑекÑии. ÐÑÑгими Ñловами, поÑомки могÑÑ Ð·Ð°Ð¿ÑеÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL, даже еÑли ÑодиÑÐµÐ»Ñ Ð¸Ñ Ð´Ð¾Ð¿ÑÑкаеÑ, но не наобоÑоÑ. Также можно ÑдалиÑÑ Ð¾Ð³ÑаниÑениеNOT NULLÑолÑко из ÑодиÑелÑÑкой ÑаблиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑONLY, не ÑдалÑÑ ÐµÐ³Ð¾ Ñ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑаблиÑ.SET EXPRESSION AS#ÐÑа ÑоÑма заменÑÐµÑ Ð²ÑÑажение генеÑиÑÑемого ÑÑолбÑа. СÑÑеÑÑвÑÑÑие даннÑе в Ñ Ñанимом генеÑиÑÑемом ÑÑолбÑе пеÑезапиÑÑваÑÑÑÑ Ð¸ Ð´Ð»Ñ Ð²ÑÐµÑ Ð±ÑдÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ð¾Ð²Ð¾Ðµ генеÑиÑÑÑÑее вÑÑажение.
ÐÑли изменÑеÑÑÑ Ñип Ñ Ñанимого генеÑиÑÑемого ÑÑолбÑа, ÑÑаÑиÑÑика ÑÑолбÑа ÑдалÑеÑÑÑ, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ñле ÑÑой опеÑаÑии Ð´Ð»Ñ ÑаблиÑÑ ÑекомендÑеÑÑÑ Ð²ÑполниÑÑ
ANALYZE. ÐÐ»Ñ Ð²Ð¸ÑÑÑалÑного генеÑиÑÑемого ÑÑолбÑа вÑполнениеANALYZEне ÑÑебÑеÑÑÑ, поÑколÑÐºÑ Ñакие ÑÑолбÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не ÑодеÑÐ¶Ð°Ñ ÑÑаÑиÑÑики.DROP EXPRESSION [ IF EXISTS ]#ÐÑа ÑоÑма пÑеобÑазÑÐµÑ Ñ ÑанимÑй генеÑиÑÑемÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð² обÑÑнÑй. СÑÑеÑÑвÑÑÑие даннÑе в ÑÑолбÑÐ°Ñ ÑÐ¾Ñ ÑанÑÑÑÑÑ, но бÑдÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð²Ð½Ð¾ÑиÑÑÑÑ Ð½Ðµ генеÑиÑÑÑÑим вÑÑажением.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑа ÑоÑма поддеÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ Ñ ÑанимÑÑ Ð³ÐµÐ½ÐµÑиÑÑемÑÑ ÑÑолбÑов (не виÑÑÑалÑнÑÑ ).
ÐÑли Ñказано
DROP EXPRESSION IF EXISTSи заданнÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ ÑвлÑеÑÑÑ Ð³ÐµÐ½ÐµÑиÑÑемÑм ÑÑолбÑом, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой. Ð ÑÑом ÑлÑÑае вÑдаÑÑÑÑ ÑолÑко замеÑание.ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]#ÐÑо ÑоÑÐ¼Ñ Ð¼ÐµÐ½ÑÑÑ Ð´Ð»Ñ ÑÑолбÑа ÑвойÑÑво иденÑиÑикаÑии или менÑÑÑ Ñ Ð°ÑакÑеÑиÑÑÐ¸ÐºÑ Ð³ÐµÐ½ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа иденÑиÑикаÑии. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑаниÑ
CREATE TABLE. Ðак иSET DEFAULT, ÑÑи ÑоÑÐ¼Ñ Ð²Ð»Ð¸ÑÑÑ Ð½Ð° поведение ÑолÑко поÑледÑÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´INSERTиUPDATE; Ð¸Ñ Ð´ÐµÐ¹ÑÑвие не оÑÑажаÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÐ°Ñ , Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð² ÑаблиÑе.ÐÑли Ñказано
DROP IDENTITY IF EXISTSи заданнÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ ÑвлÑеÑÑÑ ÑÑолбÑом иденÑиÑикаÑии, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой. Ð ÑÑом ÑлÑÑае вÑдаÑÑÑÑ ÑолÑко замеÑание.SETпаÑамеÑÑ_поÑледоваÑелÑноÑÑиRESTART#ÐÑи ÑоÑÐ¼Ñ Ð¼ÐµÐ½ÑÑÑ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°ÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ñанее Ñозданного ÑÑолбÑа иденÑиÑикаÑии. ÐдеÑÑ
паÑамеÑÑ_поÑледоваÑелÑноÑÑиâ ÑÑо паÑамеÑÑ, поддеÑживаемÑй командойALTER SEQUENCE, напÑимеÑINCREMENT BY.SET STATISTICS#ÐÑа ÑоÑма задаÑÑ Ð¾ÑиенÑÐ¸Ñ ÑбоÑа ÑÑаÑиÑÑики по ÑÑолбÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑий
ANALYZE. ÐнаÑение оÑиенÑиÑа Ð¼Ð¾Ð¶ÐµÑ Ð»ÐµÐ¶Ð°ÑÑ Ð² диапазоне Ð¾Ñ 0 до 10000. ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзовалÑÑ ÑиÑÑемнÑй оÑиенÑÐ¸Ñ ÑÑаÑиÑÑики по ÑмолÑаниÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ задаÑÑ Ð·Ð½Ð°ÑениеDEFAULT(default_statistics_target). ÐÐ»Ñ ÑÑого Ñакже можно задаÑÑ Ð·Ð½Ð°Ñение -1, но ÑепеÑÑ ÑÑÐ¾Ñ ÑпоÑоб ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов Postgres Pro обÑаÑиÑеÑÑ Ðº РазделÑ 14.2.SET STATISTICSзапÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑSHARE UPDATE EXCLUSIVE.SET (аÑÑибÑÑ=знаÑение[, ... ] )RESET (#аÑÑибÑÑ[, ... ] )ÐÑа ÑоÑма ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð°ÑÑибÑÑов. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑми паÑамеÑÑами аÑÑибÑÑов ÑвлÑÑÑÑÑ
n_distinctиn_distinct_inherited, коÑоÑÑе пеÑеопÑеделÑÑÑ Ð¾ÑÐµÐ½ÐºÑ ÐºÐ¾Ð»Ð¸ÑеÑÑва ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений, пÑоизводимÑÑ Ð¿Ð¾ÑледÑÑÑими опеÑаÑиÑмиANALYZE. ÐÑÑибÑÑn_distinctвлиÑÐµÑ Ð½Ð° ÑаÑÑÑÑ ÑÑаÑиÑÑики по Ñамой ÑаблиÑе, аn_distinct_inheritedâ на ÑÑаÑиÑÑÐ¸ÐºÑ Ð¿Ð¾ ÑаблиÑе, ÐµÑ Ð¿Ð¾Ñомкам и ÑÑаÑиÑÑÐ¸ÐºÑ Ð¿Ð¾ ÑекÑиониÑованнÑм ÑаблиÑам. ÐÑли заданное знаÑение положиÑелÑно, планиÑовÑик запÑоÑов бÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо ÑÑÐ¾Ð»Ð±ÐµÑ ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑÑо колиÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений не NULL. Также можно задаваÑÑ Ð´ÑобнÑе знаÑÐµÐ½Ð¸Ñ Ð½Ð¸Ð¶Ðµ 0 и вÑÑе или ÑавнÑе â1. Ð ÑÑом ÑлÑÑае планиÑовÑик запÑоÑов оÑÐµÐ½Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений, ÑÐ¼Ð½Ð¾Ð¶Ð°Ñ Ð°Ð±ÑолÑÑное знаÑение Ñказанного ÑиÑла на оÑеноÑное колиÑеÑÑво ÑÑÑок в ÑаблиÑе. ÐапÑимеÑ, пÑи -1 бÑÐ´ÐµÑ Ð¿ÑедполагаÑÑÑÑ, ÑÑо ÑазлиÑÐ½Ñ Ð²Ñе знаÑÐµÐ½Ð¸Ñ Ð² ÑÑолбÑе, а пÑи -0,5 â ÑÑо в ÑÑеднем каждое знаÑение повÑоÑÑеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда ÑÐ°Ð·Ð¼ÐµÑ ÑаблиÑÑ Ð¼ÐµÐ½ÑеÑÑÑ Ñо вÑеменем. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов Postgres Pro обÑаÑиÑеÑÑ Ðº РазделÑ 14.2.ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов аÑÑибÑÑов запÑаÑиваеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVE.-
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }# ÐÑа ÑоÑма ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ñежим Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑолбÑа. Ðна опÑеделÑеÑ, Ñ ÑанÑÑÑÑ Ð»Ð¸ даннÑе внÑÑÑи ÑаблиÑÑ Ð¸Ð»Ð¸ в оÑделÑной ÑаблиÑе TOAST, а Ñакже, ÑжимаÑÑÑÑ Ð»Ð¸ они. Режим
PLAINдолжен пÑименÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений ÑикÑиÑованной длинÑ, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðºinteger; ÑÑо ваÑÐ¸Ð°Ð½Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи, без ÑжаÑиÑ. РежимMAINпÑименÑеÑÑÑ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи, но ÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ ,EXTERNALâ Ð´Ð»Ñ Ð²Ð½ÐµÑнего Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ , аEXTENDEDâ Ð´Ð»Ñ Ð²Ð½ÐµÑнего Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑжаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ .EXTENDEDиÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва Ñипов даннÑÑ , поддеÑживаÑÑÐ¸Ñ Ñ ÑанилиÑе неPLAIN. ÐÑименениеEXTERNALпозволÑÐµÑ ÑÑкоÑиÑÑ Ð¾Ð¿ÐµÑаÑии Ñ Ð¿Ð¾Ð´ÑÑÑоками на оÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑtextиbytea, за ÑÑÑÑ Ð¿ÑоигÑÑÑа в обÑÑме Ñ ÑанилиÑа. ÐамеÑÑÑе, ÑÑо пÑедложениеSET STORAGEÑамо по Ñебе не менÑÐµÑ Ð½Ð¸Ñего в ÑаблиÑе, оно ÑолÑко задаÑÑ ÑÑÑаÑегиÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ñеализована пÑи бÑдÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÑÑ Ð² ÑаблиÑе. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 64.2.-
SET COMPRESSION#меÑод_ÑжаÑÐ¸Ñ ÐÑа ÑоÑма задаÑÑ Ð¼ÐµÑод ÑжаÑÐ¸Ñ Ð´Ð»Ñ ÑÑолбÑа, опÑеделÑÑÑий, как бÑдÑÑ ÑжимаÑÑÑÑ Ð·Ð½Ð°ÑениÑ, помеÑаемÑе в ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð² бÑдÑÑем (еÑли Ñежим Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð¾Ð¾Ð±Ñе допÑÑÐºÐ°ÐµÑ ÑжаÑие). ÐÑи изменении ÑÑого меÑода пеÑезапиÑÑ ÑаблиÑÑ Ð½Ðµ пÑоизводиÑÑÑ, поÑÑÐ¾Ð¼Ñ Ñже ÑÑÑеÑÑвÑÑÑие в ÑаблиÑе даннÑе могÑÑ Ð¾ÑÑаваÑÑÑÑ ÑжаÑÑми дÑÑгими меÑодами. ÐÑли ÑаблиÑа воÑÑÑанавливаеÑÑÑ ÑÑедÑÑвом pg_restore, вÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑезапиÑÑваÑÑÑÑ Ñ Ð¿Ñименением заданного меÑода ÑжаÑиÑ. ÐÑли же даннÑе вÑÑавлÑÑÑÑÑ Ð¸Ð· дÑÑгого оÑноÑÐµÐ½Ð¸Ñ (напÑимеÑ, командой
INSERT ... SELECT), знаÑÐµÐ½Ð¸Ñ Ð¸Ð· иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð½Ðµ обÑзаÑелÑно бÑдÑÑ ÑаÑпаковÑваÑÑÑÑ, Ñак ÑÑо Ñанее ÑжаÑÑе даннÑе могÑÑ ÑÐ¾Ñ ÑаниÑÑÑÑ Ñ Ð¿Ñежним меÑодом ÑжаÑиÑ, они не бÑдÑÑ Ð¿ÐµÑежимаÑÑÑÑ Ð¼ÐµÑодом, ÑÑÑановленнÑм Ð´Ð»Ñ Ñелевого ÑÑолбÑа. ÐоддеÑживаемÑе меÑÐ¾Ð´Ñ ÑжаÑиÑ:pglzиlz4. (lz4поддеÑживаеÑÑÑ, ÑолÑко еÑли Postgres Pro бÑл ÑобÑан Ñ ÐºÐ»ÑÑом--with-lz4.) ÐÑоме Ñого,меÑод_ÑжаÑиÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñениеdefault, Ñ ÐºÐ¾ÑоÑÑм пÑименÑемÑй меÑод ÑжаÑÐ¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÑекÑÑим знаÑением паÑамеÑÑа default_toast_compression во вÑÐµÐ¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ .ADD#огÑаниÑение_ÑаблиÑÑ[ NOT VALID ]ÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑаблиÑÑ Ð½Ð¾Ð²Ð¾Ðµ огÑаниÑение, пÑÐ¸Ð½Ð¸Ð¼Ð°Ñ ÑÐ¾Ñ Ð¶Ðµ ÑинÑакÑÐ¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¾Ð³ÑаниÑениÑ, ÑÑо и
CREATE TABLE, а Ñакже дополниÑелÑное ÑказаниеNOT VALID, коÑоÑое в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¾Ð³ÑаниÑений внеÑнего клÑÑа,CHECKиNOT NULL.ÐбÑÑно ÑÑа ÑоÑма влеÑÑÑ ÑканиÑование вÑей ÑаблиÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки, ÑÑо вÑе ÑÑÑеÑÑвÑÑÑие ÑÑÑоки в ÑаблиÑе ÑдовлеÑвоÑÑÑÑ Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¾Ð³ÑаниÑениÑ. Ðо еÑли иÑполÑзÑеÑÑÑ Ñказание
NOT VALID, ÑÑа поÑенÑиалÑно длиÑелÑÐ½Ð°Ñ Ð¿ÑовеÑка пÑопÑÑкаеÑÑÑ. Тем не менее ÑÑо огÑаниÑение бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð¿Ñи поÑледÑÑÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÑÑ Ð¸Ð»Ð¸ изменениÑÑ Ð´Ð°Ð½Ð½ÑÑ (Ñо еÑÑÑ ÑÑи опеÑаÑии не бÑдÑÑ Ð²ÑполненÑ, еÑли Ð½Ð¾Ð²Ð°Ñ ÑÑÑока наÑÑÑÐ¸Ñ ÑÑловие огÑаниÑениÑCHECK, либо пÑи налиÑии внеÑнего клÑÑа в главной ÑаблиÑе не найдÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑока). Ðо база даннÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо огÑаниÑение вÑполнÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ ÑÑÑок ÑаблиÑÑ, пока оно не бÑÐ´ÐµÑ Ð¿ÑовеÑено Ñ Ð¿Ñименением ÑказаниÑVALIDATE CONSTRAINT. ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± иÑполÑзовании ÑказаниÑNOT VALIDÐ²Ñ Ð½Ð°Ð¹Ð´ÐµÑе ниже, в Ñазделе ÐамеÑаниÑ.ХоÑÑ Ð¿Ð¾ÑÑи вÑе ÑазновидноÑÑи
ADDÑÑебÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑогÑаниÑение_ÑаблиÑÑACCESS EXCLUSIVE, Ð´Ð»Ñ ÑказаниÑADD FOREIGN KEYÑÑебÑеÑÑÑ ÑолÑко блокиÑовкаSHARE ROW EXCLUSIVE. ÐамеÑÑÑе, ÑÑоADD FOREIGN KEYзапÑаÑÐ¸Ð²Ð°ÐµÑ ÑакÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ÐºÐ°Ðº в ÑаблиÑе, в коÑоÑой добавлÑеÑÑÑ ÑÑо огÑаниÑение, Ñак и в ÑаблиÑе, на коÑоÑÑÑ ÑÑо огÑаниÑение ÑÑÑлаеÑÑÑ.С огÑаниÑениÑми ÑникалÑноÑÑи и пеÑвиÑного клÑÑа, добавлÑемÑми в ÑекÑиониÑованнÑе ÑаблиÑÑ, ÑвÑÐ·Ð°Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑебованиÑ; Ñм.
CREATE TABLE.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 UNIQUE INDEX CONCURRENTLY, а заÑем пÑеобÑазоваÑÑ ÐµÐ³Ð¾ в огÑаниÑение, иÑполÑзÑÑ ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ. См. ÑледÑÑÑий пÑимеÑ.ALTER CONSTRAINT#ÐÑа ÑоÑма менÑÐµÑ Ð°ÑÑибÑÑÑ Ñозданного Ñанее огÑаниÑениÑ. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ñаким обÑазом изменÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа, но ÑÑÑиÑе ÑледÑÑÑие замеÑаниÑ.
ALTER CONSTRAINT ... INHERITALTER CONSTRAINT ... NO INHERIT#ÐÑи ÑоÑÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð½Ð°ÑледÑемоÑÑÑ Ð¾Ð³ÑаниÑениÑ: наÑледÑемое ÑÑановиÑÑÑ Ð½ÐµÐ½Ð°ÑледÑемÑм, или наобоÑоÑ. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ñаким ÑпоÑобом можно изменÑÑÑ ÑолÑко огÑаниÑениÑ
NOT NULL. ÐÑли ненаÑледÑемое огÑаниÑение помеÑаеÑÑÑ ÐºÐ°Ðº наÑледÑемое Ð´Ð»Ñ ÑаблиÑÑ Ñ Ð´Ð¾ÑеÑними ÑаблиÑами, Ð´Ð»Ñ Ð²ÑÐµÑ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки добавлено Ñакое же огÑаниÑение. ÐÑи обÑаÑном изменении â наÑледÑемое огÑаниÑение на доÑеÑÐ½Ð¸Ñ ÑаблиÑÐ°Ñ Ð¿Ð¾Ð¼ÐµÑаеÑÑÑ ÐºÐ°Ðº ненаÑледÑемое, но не ÑдалÑеÑÑÑ.VALIDATE CONSTRAINT#ÐÑа ÑоÑма пÑовеÑÑÐµÑ Ð¾Ð³ÑаниÑение внеÑнего клÑÑа, огÑаниÑение
CHECKилиNOT NULL, Ñозданное Ñанее какNOT VALID. ÐÑи пÑовеÑке ÑканиÑÑеÑÑÑ Ð²ÑÑ ÑаблиÑа Ñ ÑелÑÑ ÑбедиÑÑÑÑ, ÑÑо огÑаниÑÐµÐ½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑ Ð²Ñе ÑÑÑоки. ÐÑли Ð´Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑÑÑÑNOT ENFORCED, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка. ÐÑли огÑаниÑение Ñже помеÑено как пÑовеÑенное, ниÑего не пÑоиÑÑ Ð¾Ð´Ð¸Ñ. (Ð ÑÑм полÑза ÑÑой командÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð² Ñазделе ÐамеÑаниÑ.)ÐÑа команда запÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
SHARE UPDATE EXCLUSIVE.DROP CONSTRAINT [ IF EXISTS ]#ÐÑа ÑоÑма ÑдалÑÐµÑ Ñказанное огÑаниÑение ÑаблиÑÑ, вмеÑÑе Ñ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñим индекÑом, еÑли Ñаковой имееÑÑÑ. ÐÑли Ñказано
IF EXISTSи заданное огÑаниÑение не ÑÑÑеÑÑвÑеÑ, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой. Ð ÑÑом ÑлÑÑае вÑдаÑÑÑÑ ÑолÑко замеÑание.DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER#ÐÑи ÑоÑÐ¼Ñ Ð½Ð°ÑÑÑаиваÑÑ ÑÑабаÑÑвание ÑÑиггеÑа(ов), пÑинадлежаÑего ÑаблиÑе. ÐÑклÑÑÑннÑй ÑÑÐ¸Ð³Ð³ÐµÑ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑиÑÑеме, но не вÑполнÑеÑÑÑ, когда пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð²ÑзÑваÑÑее его ÑобÑÑие. (ÐÐ»Ñ Ð¾ÑложеннÑÑ ÑÑиггеÑов ÑоÑÑоÑние вклÑÑÐµÐ½Ð¸Ñ Ð¿ÑовеÑÑеÑÑÑ Ð¿Ñи возникновении ÑобÑÑиÑ, а не когда ÑакÑиÑеÑки вÑзÑваеÑÑÑ ÑÑнкÑÐ¸Ñ ÑÑиггеÑа.) ÐÑа команда Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð¾Ð´Ð¸Ð½ ÑÑÐ¸Ð³Ð³ÐµÑ Ð¿Ð¾ имени, либо вÑе ÑÑиггеÑÑ ÑаблиÑÑ, либо ÑолÑко полÑзоваÑелÑÑкие ÑÑиггеÑÑ (кÑоме ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑиÑиÑÑемнÑÑ ÑÑиггеÑов огÑаниÑений, напÑимеÑ, ÑÑиггеÑов, ÑеализÑÑÑÐ¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и огÑаниÑениÑ-иÑклÑÑениÑ). ÐÐ»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ вклÑÑÐµÐ½Ð¸Ñ ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑиÑиÑÑемнÑÑ ÑÑиггеÑов огÑаниÑений ÑÑебÑÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ; оÑклÑÑаÑÑ Ð¸Ñ ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ, Ñак как оÑевидно, ÑÑо невозможно гаÑанÑиÑоваÑÑ ÑелоÑÑноÑÑÑ Ð¾Ð³ÑаниÑений, еÑли ÑÑиггеÑÑ Ð½Ðµ ÑабоÑаÑÑ.
Ðа Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑов Ñакже влиÑÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ session_replication_role. ÐклÑÑÑннÑе без дополниÑелÑнÑÑ Ñказаний (по ÑмолÑаниÑ) ÑÑиггеÑÑ Ð±ÑдÑÑ ÑÑабаÑÑваÑÑ, когда ÑÐ¾Ð»Ñ ÑепликаÑии â «origin» (по ÑмолÑаниÑ) или «local». ТÑиггеÑÑ, вклÑÑÑннÑе Ñказанием
ENABLE REPLICA, бÑдÑÑ ÑÑабаÑÑваÑÑ, ÑолÑко еÑли ÑекÑÑий Ñежим ÑеанÑа â «replica», а ÑÑиггеÑÑ, вклÑÑÑннÑе ÑказаниемENABLE ALWAYS, бÑдÑÑ ÑÑабаÑÑваÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ ÑекÑÑего Ñежима ÑепликаÑии.ÐÑÑÐµÐºÑ ÑÑого Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо в конÑигÑÑаÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑиггеÑÑ Ð½Ðµ ÑÑабаÑÑваÑÑ Ð² ÑÐµÐ¿Ð»Ð¸ÐºÐ°Ñ . ÐÑо полезно, поÑÐ¾Ð¼Ñ ÑÑо еÑли ÑÑÐ¸Ð³Ð³ÐµÑ Ð¸ÑполÑзÑеÑÑÑ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ базе Ð´Ð»Ñ ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð¾ ÑаблиÑам, ÑиÑÑема ÑепликаÑии бÑÐ´ÐµÑ ÑеплиÑиÑоваÑÑ Ð¸ ÑаÑпÑеделÑннÑе Ñаким обÑазом даннÑе, поÑÑÐ¾Ð¼Ñ ÑÑÐ¸Ð³Ð³ÐµÑ Ð½Ðµ должен ÑÑабаÑÑваÑÑ Ð² Ñеплике вÑоÑой Ñаз, Ñак как инаÑе бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¼ÐµÑÑо дÑблиÑование. Ðднако еÑли ÑÑÐ¸Ð³Ð³ÐµÑ Ð¸ÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ñелей, напÑимеÑ, вÑдаÑÑ ÑведомлениÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑÑÑановиÑÑ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ ÑвойÑÑво
ENABLE ALWAYS, ÑÑÐ¾Ð±Ñ Ð¾Ð½ Ñакже ÑÑабаÑÑвал в ÑÐµÐ¿Ð»Ð¸ÐºÐ°Ñ .Ðогда ÑÑа команда пÑименÑеÑÑÑ Ðº ÑекÑиониÑованной ÑаблиÑе, ÑоÑÑоÑÐ½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ Â«ÐºÐ»Ð¾Ð½Ð¸ÑованнÑÑ Â» ÑÑиггеÑов в ÑекÑиÑÑ Ñакже изменÑÑÑÑÑ, еÑли не Ñказано
ONLY.ÐÑа команда запÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
SHARE ROW EXCLUSIVE.DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE#ÐÑи ÑоÑÐ¼Ñ Ð½Ð°ÑÑÑаиваÑÑ ÑÑабаÑÑвание пÑавил пеÑезапиÑи, оÑноÑÑÑÐ¸Ñ ÑÑ Ðº ÑаблиÑе. ÐÑклÑÑÑнное пÑавило ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑиÑÑеме, но не пÑименÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿ÐµÑепиÑÑÐ²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа. Ðо ÑÑÑи ÑÑи опеÑаÑии Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ Ð¾Ð¿ÐµÑаÑиÑм вклÑÑениÑ/оÑклÑÑÐµÐ½Ð¸Ñ ÑÑиггеÑов. Ðднако ÑÑо не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° пÑавила
ON SELECTâ они пÑименÑÑÑÑÑ Ð²Ñегда, ÑÑÐ¾Ð±Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñодолжали ÑабоÑаÑÑ, даже в ÑеанÑÐ°Ñ , иÑполнÑÑÑÐ¸Ñ Ð½Ðµ оÑновнÑÑ ÑÐ¾Ð»Ñ ÑепликаÑии.Ðа Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ñавил Ñакже оказÑÐ²Ð°ÐµÑ Ð²Ð»Ð¸Ñние конÑигÑÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ session_replication_role, подобное ÑомÑ, ÑÑо опиÑано вÑÑе пÑимениÑелÑно к ÑÑиггеÑам.
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 WITHOUT OIDS#ÐбеÑпеÑиваÑÑий обÑаÑнÑÑ ÑовмеÑÑимоÑÑÑ ÑинÑакÑÐ¸Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑиÑÑемного ÑÑолбÑа
oid. Так как добавиÑÑ ÑиÑÑемнÑе ÑÑолбÑÑoidÑепеÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, ÑÑо Ñказание ÑакÑиÑеÑки не дейÑÑвÑеÑ.SET ACCESS METHOD#ÐÑа ÑоÑма изменÑÐµÑ Ð¼ÐµÑод доÑÑÑпа к ÑаблиÑе, пеÑепиÑÑÐ²Ð°Ñ ÐµÑ Ñ Ð¸ÑполÑзованием Ñказанного меÑода доÑÑÑпа. ÐÑли ÑказаÑÑ
DEFAULT, бÑÐ´ÐµÑ Ð²ÑбÑан меÑод, заданнÑй в конÑигÑÑаÑионном паÑамеÑÑе default_table_access_method. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ðлаве 60.ÐÑи ÑÑом в ÑекÑиониÑованной ÑаблиÑе даннÑÑ Ð´Ð»Ñ Ð¿ÐµÑезапиÑи неÑ, однако ÑозданнÑе позже ÑекÑии бÑдÑÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение меÑода доÑÑÑпа по ÑмолÑаниÑ, пока Ð¸Ñ Ð½Ðµ пеÑезапиÑÑÑ Ñ Ð¸ÑполÑзованием пÑедложениÑ
USING. ÐÑли ÑказаÑÑDEFAULT, Ñанее ÑÑÑановленное знаÑение ÑдалиÑÑÑ, и в ÑезÑлÑÑаÑе новÑе ÑекÑии бÑдÑÑ Ð¸ÑполÑзоваÑÑ Ð¼ÐµÑод по ÑмолÑаниÑ, заданнÑй вdefault_table_access_method.SET TABLESPACE#ÐÑа ÑоÑма менÑÐµÑ ÑаблиÑное пÑоÑÑÑанÑÑво ÑаблиÑÑ Ð½Ð° заданное и пеÑемеÑÐ°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑвÑзаннÑе Ñ ÑаблиÑей, в новое пÑоÑÑÑанÑÑво. ÐндекÑÑ ÑаблиÑÑ, еÑли они имеÑÑÑÑ, не пеÑемеÑаÑÑÑÑ; однако Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑемеÑÑиÑÑ Ð¾ÑделÑно дополниÑелÑнÑми командами
SET TABLESPACE. Ð ÑекÑиониÑованной ÑаблиÑе пÑи ÑÑом ниÑего не пеÑемеÑаеÑÑÑ, но ÑекÑии, ÑозданнÑе впоÑледÑÑвии Ñ ÑказаниемCREATE TABLE PARTITION OF, бÑдÑÑ Ð¸ÑполÑзоваÑÑ ÑÑо ÑаблиÑное пÑоÑÑÑанÑÑво (еÑли ÑолÑко оно не бÑÐ´ÐµÑ Ð¿ÐµÑеопÑеделено пÑедложениемTABLESPACE).ФоÑма
ALL IN TABLESPACEпозволÑÐµÑ Ð¿ÐµÑенеÑÑи в дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво вÑе ÑаблиÑÑ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑекÑÑем пÑоÑÑÑанÑÑве, пÑи ÑÑом она ÑнаÑала блокиÑÑÐµÑ Ð²Ñе ÑаблиÑÑ, а заÑем пеÑеноÑÐ¸Ñ ÐºÐ°Ð¶Ð´ÑÑ Ð¸Ð· Ð½Ð¸Ñ . ÐÑа ÑоÑма Ñакже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÑедложениеOWNED BY, Ñ ÐºÐ¾ÑоÑÑм пеÑемеÑаÑÑÑÑ ÑолÑко ÑаблиÑÑ ÑказаннÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑев. C ÑказаниемNOWAITкоманда завеÑÑаеÑÑÑ Ð¾Ñибкой, еÑли не Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²Ñе ÑÑебÑемÑе блокиÑовки немедленно. ÐамеÑÑÑе, ÑÑо ÑиÑÑемнÑе каÑалоги ÑÑа ÑоÑма не пеÑемеÑаеÑ; еÑли ÑÑебÑеÑÑÑ Ð¿ÐµÑемеÑÑиÑÑ Ð¸Ñ , ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑALTER DATABASEили ÑвнÑе вÑзовÑALTER TABLE. ÐÑноÑениÑinformation_schemaне ÑÑиÑаÑÑÑÑ ÑаÑÑÑÑ ÑиÑÑемнÑÑ ÐºÐ°Ñалогов и Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð¿ÐµÑемеÑениÑ. См. Ñакже опиÑаниеCREATE TABLESPACE.SET { LOGGED | UNLOGGED }#ÐÑа ÑоÑма менÑÐµÑ Ñ Ð°ÑакÑеÑиÑÑÐ¸ÐºÑ Ð¶ÑÑналиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑÑ, Ð´ÐµÐ»Ð°ÐµÑ ÑаблиÑÑ Ð¶ÑÑналиÑÑемой/нежÑÑналиÑÑемой, ÑооÑвеÑÑÑвенно (Ñм.
UNLOGGED). РвÑеменной ÑаблиÑе она непÑименима.ÐÑи ÑÑом Ñакже менÑеÑÑÑ Ñежим жÑÑналиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÑÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей, ÑвÑзаннÑÑ Ñ ÑаблиÑей (Ñ ÐµÑ ÑÑолбÑами иденÑиÑикаÑоÑов или ÑÑолбÑами serial). Ðднако Ñежим жÑÑналиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÐ°ÐºÐ¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей можно измениÑÑ Ð¸ оÑделÑно.
ÐÑа ÑоÑма не поддеÑживаеÑÑÑ Ð´Ð»Ñ ÑекÑиониÑованнÑÑ ÑаблиÑ.
SET (#паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] )ÐÑа ÑоÑма менÑÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко паÑамеÑÑов Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐодÑобнее допÑÑÑимÑе паÑамеÑÑÑ ÑаÑÑмоÑÑÐµÐ½Ñ Ð² Ñазделе ÐаÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑаниÑ
CREATE TABLE. ÐамеÑÑÑе, ÑÑо ÑÑа команда не менÑÐµÑ ÑодеÑжимое ÑаблиÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾; в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑезапиÑаÑÑ ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй ÑÑÑекÑ. ÐÑо можно ÑделаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´VACUUM FULL,CLUSTERили одной из ÑоÑмALTER TABLE, пÑинÑдиÑелÑно пеÑезапиÑÑваÑÑÐ¸Ñ ÑаблиÑÑ. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов, ÑвÑзаннÑÑ Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑиком, вÑÑÑпаÑÑ Ð² ÑÐ¸Ð»Ñ Ð¿Ñи ÑледÑÑÑей блокиÑовке ÑаблиÑÑ, Ñак ÑÑо в ÑекÑÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑÐ°Ñ Ð¾Ð½Ð¸ не пÑоÑвлÑÑÑÑÑ.ÐÐ°Ð½Ð½Ð°Ñ ÑоÑма заÑÑебÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
SHARE UPDATE EXCLUSIVEÐ´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов Ñ ÑанениÑ, ÑвÑзаннÑÑ Ñ ÑакÑоÑом заполнениÑ, TOAST и авÑооÑиÑÑкой, а Ñакже паÑамеÑÑа планиÑовÑикаparallel_workers.RESET (#паÑамеÑÑ_Ñ ÑанениÑ[, ... ] )ÐÑа ÑоÑма ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко паÑамеÑÑов Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ðº знаÑениÑм по ÑмолÑаниÑ. Ðак и Ñ
SET, Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑезапиÑаÑÑ ÑаблиÑÑ.INHERIT#ÑаблиÑа_ÑодиÑелÑÐÑа ÑоÑма назнаÑÐ°ÐµÑ ÑелевÑÑ ÑаблиÑÑ Ð¿Ð¾Ñомком заданной ÑодиÑелÑÑкой ÑаблиÑÑ. ÐпоÑледÑÑвии запÑоÑÑ Ðº ÑодиÑелÑÑкой ÑаблиÑе бÑдÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð·Ð°Ð¿Ð¸Ñи и Ñелевой ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑаблиÑа могла ÑÑаÑÑ Ð¿Ð¾Ñомком, она должна ÑодеÑжаÑÑ Ñе же ÑÑолбÑÑ, ÑÑо и ÑодиÑелÑÑÐºÐ°Ñ (Ñ Ð¾ÑÑ Ð¾Ð½Ð° Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¸ дополниÑелÑнÑе ÑÑолбÑÑ). СÑолбÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ .
Также в доÑеÑней ÑаблиÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð²Ñе огÑаниÑениÑ
CHECKиNOT NULLÑодиÑелÑÑкой ÑаблиÑÑ, за иÑклÑÑением ненаÑледÑемÑÑ (Ñо еÑÑÑ ÑозданнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER TABLE ... ADD CONSTRAINT ... NO INHERIT), коÑоÑÑе игноÑиÑÑÑÑÑÑ; пÑи ÑÑом вÑе ÑооÑвеÑÑÑвÑÑÑие огÑаниÑÐµÐ½Ð¸Ñ Ð² доÑеÑней ÑаблиÑе не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð½ÐµÐ½Ð°ÑледÑемÑми. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð³ÑаниÑениÑUNIQUE,PRIMARY KEYиFOREIGN KEYне ÑÑиÑÑваÑÑÑÑ, но в бÑдÑÑем ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ.NO INHERIT#ÑаблиÑа_ÑодиÑелÑÐÑа ÑоÑма ÑдалÑÐµÑ ÑелевÑÑ ÑаблиÑÑ Ð¸Ð· ÑпиÑка поÑомков Ñказанной ÑодиÑелÑÑкой ÑаблиÑÑ. РезÑлÑÑаÑÑ Ð·Ð°Ð¿ÑоÑов к ÑодиÑелÑÑкой ÑаблиÑе поÑле ÑÑого не бÑдÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð·Ð°Ð¿Ð¸Ñи, взÑÑÑе из Ñелевой ÑаблиÑÑ.
OF#имÑ_ÑипаÐÑа ÑоÑма ÑвÑзÑÐ²Ð°ÐµÑ ÑаблиÑÑ Ñ ÑоÑÑавнÑм Ñипом, как еÑли Ð±Ñ Ð¾Ð½Ð° бÑла ÑÑоÑмиÑована командой
CREATE TABLE OF. ÐÑи ÑÑом ÑпиÑок имÑн и Ñипов ÑÑолбÑов должен ÑоÑно ÑооÑвеÑÑÑвоваÑÑ ÑомÑ, ÑÑо обÑазÑÐµÑ ÑоÑÑавной Ñип. ÐÑоме Ñого, ÑаблиÑа не должна бÑÑÑ Ð¿Ð¾Ñомком какой-либо дÑÑгой ÑаблиÑÑ. ÐÑи огÑаниÑÐµÐ½Ð¸Ñ Ð³Ð°ÑанÑиÑÑÑÑ, ÑÑо командаCREATE TABLE OFÐ¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑоздаÑÑ ÑаблиÑÑ Ñ Ñаким же опÑеделением.NOT OF#ÐÑа ÑоÑма ÑазÑÑÐ²Ð°ÐµÑ ÑвÑÐ·Ñ ÑипизиÑованной ÑаблиÑÑ Ñ ÐµÑ Ñипом.
OWNER TO#ÐÑа ÑоÑма менÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑаблиÑÑ, поÑледоваÑелÑноÑÑи, пÑедÑÑавлениÑ, маÑеÑиализованного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑоÑонней ÑаблиÑÑ Ð½Ð° заданного полÑзоваÑелÑ.
REPLICA IDENTITY#ÐÑа ÑоÑма менÑÐµÑ Ð¸Ð½ÑоÑмаÑиÑ, запиÑÑваемÑÑ Ð² жÑÑнал пÑедзапиÑи Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии изменÑемÑÑ Ð¸Ð»Ð¸ ÑдалÑемÑÑ ÑÑÑок. РболÑÑинÑÑве ÑлÑÑаев ÑÑаÑое знаÑение в каждом ÑÑолбÑе запиÑÑваеÑÑÑ, ÑолÑко еÑли оно оÑлиÑаеÑÑÑ Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾, но знаÑение, Ñ ÑанÑÑееÑÑ Ð¾ÑделÑно, запиÑÑваеÑÑÑ Ð²Ñегда, даже еÑли оно не изменилоÑÑ. ÐаннÑй паÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ ÑолÑко пÑи иÑполÑзовании логиÑеÑкой ÑепликаÑии.
DEFAULT#ÐапиÑÑваÑÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов пеÑвиÑного клÑÑа. ÐÑо Ñежим по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½ÐµÑиÑÑемнÑÑ ÑаблиÑ. ÐÑли пеÑвиÑнÑй клÑÑ Ð¾ÑÑÑÑÑÑвÑеÑ, поведение аналогиÑно
NOTHING.USING INDEX#имÑ_индекÑаÐапиÑÑваÑÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов, ÑоÑÑавлÑÑÑÐ¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñй индекÑ, коÑоÑÑй должен бÑÑÑ ÑникалÑнÑм, не ÑаÑÑиÑнÑм, не оÑложеннÑм и вклÑÑаÑÑ ÑолÑко ÑÑолбÑÑ, помеÑеннÑе
NOT NULL. ÐÑли ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ ÑдалÑн, поведение бÑÐ´ÐµÑ Ñаким же, как в ÑежимеNOTHING.FULL#ÐапиÑÑваÑÑÑÑ ÑÑаÑÑе знаÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑÑолбÑов в ÑÑÑоке.
NOTHING#ÐнÑоÑмаÑÐ¸Ñ Ð¾ ÑÑаÑой ÑÑÑоке не запиÑÑваеÑÑÑ. ÐÑо Ñежим по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑиÑÑемнÑÑ ÑаблиÑ.
RENAME#ФоÑмÑ
RENAMEменÑÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ (или индекÑа, поÑледоваÑелÑноÑÑи, пÑедÑÑавлениÑ, маÑеÑиализованного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑоÑонней ÑаблиÑÑ), Ð¸Ð¼Ñ Ð¾ÑделÑного ÑÑолбÑа ÑаблиÑÑ Ð¸Ð»Ð¸ Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑи пеÑеименовании огÑаниÑениÑ, Ñ ÐºÐ¾ÑоÑого имееÑÑÑ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñий индекÑ, ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ñакже пеÑеименовÑваеÑÑÑ. Ðа Ñ ÑанимÑе даннÑе ÑÑо не влиÑеÑ.SET SCHEMA#ÐÑа ÑоÑма пеÑемеÑÐ°ÐµÑ ÑаблиÑÑ Ð² дÑÑгÑÑ ÑÑ ÐµÐ¼Ñ. ÐмеÑÑе Ñ ÑаблиÑей пеÑемеÑаÑÑÑÑ ÑвÑзаннÑе Ñ Ð½ÐµÐ¹ индекÑÑ Ð¸ огÑаниÑениÑ, а Ñакже поÑледоваÑелÑноÑÑи, пÑинадлежаÑие ÑÑолбÑам ÑаблиÑÑ.
ATTACH PARTITION#имÑ_ÑекÑии{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT }ÐÑа ÑоÑма пÑиÑоединÑÐµÑ ÑÑÑеÑÑвÑÑÑÑÑ ÑаблиÑÑ (коÑоÑÐ°Ñ Ñоже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑекÑиониÑованной) в каÑеÑÑве ÑекÑии к Ñелевой ÑаблиÑе. С Ñказанием
FOR VALUESÑаблиÑа ÑÑÐ°Ð½ÐµÑ ÑекÑией Ð´Ð»Ñ Ð¾Ð¿ÑеделÑннÑÑ Ð·Ð½Ð°Ñений, а Ñ ÑказаниемDEFAULTâ ÑекÑией по ÑмолÑаниÑ. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ индекÑа в Ñелевой ÑаблиÑе бÑÐ´ÐµÑ Ñоздан ÑооÑвеÑÑÑвÑÑÑий Ð¸Ð½Ð´ÐµÐºÑ Ð² пÑиÑоединÑемой ÑаблиÑе; или, еÑли ÑавнознаÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ñже ÑÑÑеÑÑвÑеÑ, он бÑÐ´ÐµÑ Ð¿ÑиÑоединÑн к индекÑÑ Ñелевой ÑаблиÑÑ, как пÑи вÑполнении командÑALTER INDEX ATTACH PARTITION. ÐамеÑÑÑе, ÑÑо еÑли ÑÑÑеÑÑвÑÑÑÐ°Ñ ÑаблиÑа ÑвлÑеÑÑÑ ÑÑоÑонней, в наÑÑоÑÑее вÑÐµÐ¼Ñ ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¿ÑиÑоединиÑÑ Ð² каÑеÑÑве ÑекÑии к Ñелевой ÑаблиÑе, в коÑоÑой имеÑÑÑÑ ÑникалÑнÑе индекÑÑ (UNIQUE). (См. Ñакже CREATE FOREIGN TABLE.) Также Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑÑеÑÑвÑÑÑего в Ñелевой ÑаблиÑе полÑзоваÑелÑÑкого ÑÑиггеÑа ÑÑÐ¾Ð²Ð½Ñ ÑÑÑок бÑÐ´ÐµÑ Ñоздан Ñакой же ÑÑÐ¸Ð³Ð³ÐµÑ Ð² пÑиÑоединÑемой ÑаблиÑе.ÐÐ»Ñ ÑекÑии, добавлÑемой Ñ
FOR VALUES, иÑполÑзÑеÑÑÑ Ñо жеÑказание_гÑаниÑ_ÑекÑии, ÑÑо и вCREATE TABLE. ÐÑо Ñказание должно ÑооÑвеÑÑÑвоваÑÑ ÑÑÑаÑегии ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ клÑÑÑ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñелевой ÑаблиÑÑ. ÐÑиÑоединÑÐµÐ¼Ð°Ñ ÑаблиÑа должна имеÑÑ Ñе же ÑÑолбÑÑ, ÑÑо и ÑелеваÑ, и Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ Ð´ÑÑÐ³Ð¸Ñ ; более Ñого, Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ Ð¸ ÑÐ¸Ð¿Ñ ÑÑолбÑов. ÐÑоме Ñого, в ней Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ñе же огÑаниÑениÑNOT NULLиCHECK, ÑÑо и в Ñелевой ÑаблиÑе, не помеÑеннÑе какNO INHERIT. ÐгÑаниÑениÑFOREIGN KEYв наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ ÑÑиÑÑваÑÑÑÑ. ÐгÑаниÑениÑUNIQUEиPRIMARY KEYиз ÑодиÑелÑÑкой ÑаблиÑÑ Ð±ÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð² ÑекÑии, еÑли они Ñам еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑÑÑ.ÐÑли Ð½Ð¾Ð²Ð°Ñ ÑекÑÐ¸Ñ ÑвлÑеÑÑÑ Ð¾Ð±ÑÑной ÑаблиÑей, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо ни одна ÑÑÑока в ÑаблиÑе не наÑÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение ÑекÑии, пÑоизводиÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ðµ ÑканиÑование ÑаблиÑÑ. Такого ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ избежаÑÑ, добавив пеÑед вÑполнением ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑаблиÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑее огÑаниÑение
CHECK, допÑÑкаÑÑее ÑолÑко Ñакие ÑÑÑоки, коÑоÑÑе ÑдовлеÑвоÑÑÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ð¾Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑекÑии. ÐалиÑие ÑÑого огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¾Ð¿ÑеделиÑÑ, ÑÑо ÑаблиÑÑ Ð½Ðµ нÑжно ÑканиÑоваÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки огÑаниÑÐµÐ½Ð¸Ñ ÑекÑии. Ðднако ÑÑо не бÑÐ´ÐµÑ ÑабоÑаÑÑ, еÑли какие-либо клÑÑи ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвлÑÑÑÑÑ Ð²ÑÑажениÑми и ÑекÑÐ¸Ñ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑениÑNULL. ÐÑи пÑиÑоединении ÑекÑии по ÑпиÑкÑ, не пÑинимаÑÑей знаÑениÑNULL, Ñакже добавÑÑе огÑаниÑениеNOT NULLв ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ»ÑÑа ÑекÑиониÑованиÑ, еÑли ÑÑо не вÑÑажение.ÐÑли Ð½Ð¾Ð²Ð°Ñ ÑекÑÐ¸Ñ ÑвлÑеÑÑÑ ÑÑоÑонней ÑаблиÑей, Ð½Ð¸ÐºÐ°ÐºÐ°Ñ Ð¿ÑовеÑка, ÑдовлеÑвоÑÑÑÑ Ð»Ð¸ вÑе ÑÑÑоки ÑÑоÑонней ÑаблиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑекÑии, не вÑполнÑеÑÑÑ. (ÐбÑÑждение огÑаниÑений ÑÑоÑонней ÑаблиÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи в CREATE FOREIGN TABLE.)
Ðогда Ñ ÑаблиÑÑ ÐµÑÑÑ ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑекÑии пÑи добавлении новой менÑеÑÑÑ Ð¾Ð³ÑаниÑение ÑекÑии. СекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÑÑоки, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑенеÑÐµÐ½Ñ Ð² новÑÑ ÑекÑиÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð° бÑÐ´ÐµÑ Ð¿ÑоÑканиÑована и пÑовеÑена на пÑÐµÐ´Ð¼ÐµÑ Ð¸Ñ Ð¾ÑÑÑÑÑÑвиÑ. ÐÑого ÑканиÑованиÑ, как и ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑекÑии, можно избежаÑÑ, еÑли опÑеделиÑÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее огÑаниÑение
CHECK. ÐÑоме Ñого, ÑканиÑование ÑÑой ÑекÑии, как и новой, вÑегда пÑопÑÑкаеÑÑÑ, когда Ð´Ð°Ð½Ð½Ð°Ñ ÑекÑÐ¸Ñ ÑвлÑеÑÑÑ ÑÑоÑонней ÑаблиÑей.ÐÐ»Ñ Ð¿ÑиÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑекÑии заÑÑебÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка
SHARE UPDATE EXCLUSIVEв ÑодиÑелÑÑкой ÑаблиÑе, помимо блокиÑовокACCESS EXCLUSIVEв пÑиÑоединÑемÑÑ ÑаблиÑÐ°Ñ Ð¸ ÑекÑии по ÑмолÑÐ°Ð½Ð¸Ñ (пÑи налиÑии).ÐодобнÑе блокиÑовки Ñакже Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑанавливаÑÑÑÑ Ð²Ð¾ вÑÐµÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½ÑÑ ÑекÑиÑÑ , еÑли пÑиÑоединÑÐµÐ¼Ð°Ñ ÑаблиÑа либо ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² ÑÐ²Ð¾Ñ Ð¾ÑеÑÐµÐ´Ñ ÑвлÑеÑÑÑ ÑекÑиониÑованной ÑаблиÑей. ÐлокиÑовки вложеннÑÑ ÑекÑий можно избежаÑÑ, добавив огÑаниÑение
CHECK, как ÑÑо опиÑано в ÐодÑазделе 5.12.2.2.DETACH PARTITION#имÑ_ÑекÑии[ CONCURRENTLY | FINALIZE ]ÐÑа ÑоÑма оÑÑоединÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ ÑекÑÐ¸Ñ Ð¾Ñ Ñелевой ÑаблиÑÑ. ÐÑÑоединÑÐµÐ¼Ð°Ñ ÑекÑÐ¸Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ ÑÑÑеÑÑвоваÑÑ ÐºÐ°Ðº оÑделÑÐ½Ð°Ñ ÑаблиÑа, но более не бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ ÑвÑзей Ñ ÑаблиÑей, Ð¾Ñ ÐºÐ¾ÑоÑой бÑла оÑÑоединена. ÐÑе индекÑÑ, коÑоÑÑе бÑли пÑиÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ðº индекÑам Ñелевой ÑаблиÑÑ, оÑÑоединÑÑÑÑÑ, а ÑÑиггеÑÑ, ÑозданнÑе как копии ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð² Ñелевой ÑаблиÑе, ÑдалÑÑÑÑÑ. ТаблиÑÑ, ÑÑÑлаÑÑиеÑÑ Ð½Ð° ÑекÑиониÑованнÑÑ ÑаблиÑÑ ÑеÑез внеÑние клÑÑи, блокиÑÑÑÑÑÑ Ð² Ñежиме
SHARE.С Ñказанием
CONCURRENTLYÑÑа опеÑаÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ Ñ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð½Ñм ÑÑовнем блокиÑовок во избежание блокиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеанÑов, коÑоÑÑе могÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº данной ÑекÑиониÑованной ÑаблиÑе. Ð ÑÑом Ñежиме оÑÑоединение пÑоизводиÑÑÑ Ð² двÑÑ ÑÑанзакÑиÑÑ . РпеÑвой ÑÑанзакÑии в ÑодиÑелÑÑкой ÑаблиÑе и заданной ÑекÑии ÑÑÑанавливаеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкаSHARE UPDATE EXCLUSIVE, а ÑекÑÐ¸Ñ Ð¿Ð¾Ð¼ÐµÑаеÑÑÑ ÐºÐ°Ðº оÑÑоединÑемаÑ, поÑле Ñего ÑÑанзакÑÐ¸Ñ ÑикÑиÑÑеÑÑÑ; заÑем Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑÑ Ð²Ñе оÑÑалÑнÑе ÑÑанзакÑии, иÑполÑзÑÑÑие ÑекÑиониÑованнÑÑ ÑаблиÑÑ. Ðогда вÑе они завеÑÑаÑÑÑÑ, вÑоÑÐ°Ñ ÑÑанзакÑÐ¸Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑSHARE UPDATE EXCLUSIVEÐ´Ð»Ñ ÑекÑиониÑованной ÑаблиÑÑ Ð¸ACCESS EXCLUSIVEÐ´Ð»Ñ Ð¾ÑÑоединÑемой ÑекÑии, поÑле Ñего пÑоÑеÑÑ Ð¾ÑÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ°Ð½ÑиваеÑÑÑ. Ð ÑекÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑÑÑ Ð¾Ð³ÑаниÑениеCHECK, повÑоÑÑÑÑее огÑаниÑение ÑекÑии. УказаниеCONCURRENTLYнелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð² блоке ÑÑанзакÑии, а Ñакже оно не допÑÑкаеÑÑÑ, еÑли ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑодеÑÐ¶Ð¸Ñ ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.Указание
FINALIZEпозволÑÐµÑ Ð·Ð°Ð²ÐµÑÑиÑÑ Ð¾Ð¿ÐµÑаÑиÑDETACH CONCURRENTLY, пÑеÑваннÑÑ Ð¸Ð»Ð¸ оÑменÑннÑÑ Ñанее. Родин Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени в ÑоÑÑоÑнии оÑÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ Ð½ÐµÐºÐ¾ÑоÑой ÑекÑиониÑованной ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð½Ðµ более одной ÑекÑии.SPLIT PARTITION#имÑ_ÑекÑииINTO (PARTITIONимÑ_ÑекÑии1{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT }, PARTITIONимÑ_ÑекÑии2{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT } [, ...])ÐÑа ÑоÑма ÑазделÑÐµÑ ÑекÑÐ¸Ñ Ñелевой ÑаблиÑÑ. СекÑиониÑование по Ñ ÐµÑÑ Ð½Ðµ поддеÑживаеÑÑÑ. ÐÑаниÑÑ Ð½Ð¾Ð²ÑÑ ÑекÑий не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÐµÑеÑекаÑÑÑÑ Ñ Ð½Ð¾Ð²Ñми и ÑÑÑеÑÑвÑÑÑими ÑекÑиÑми (за иÑклÑÑением
имÑ_ÑекÑии). ÐÑли ÑазделÑÐ½Ð½Ð°Ñ ÑекÑÐ¸Ñ Ð±Ñла ÑекÑией по ÑмолÑÐ°Ð½Ð¸Ñ (DEFAULT), Ñо одна из новÑÑ ÑекÑий должна Ñакже ÑÑаÑÑ ÑекÑией по ÑмолÑаниÑ. ÐÑли одна из новÑÑ Ð¸Ð»Ð¸ ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑекÑий ÑвлÑеÑÑÑ ÑекÑией по ÑмолÑÐ°Ð½Ð¸Ñ (DEFAULT), Ñо Ñ Ð½Ð¾Ð²ÑÑ ÑекÑийимÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ.д. могÑÑ Ð±ÑÑÑ Ð¿ÑÐ¾Ð±ÐµÐ»Ñ Ð¼ÐµÐ¶Ð´Ñ Ð³ÑаниÑами Ñ Ð´ÑÑгими ÑекÑиÑми. ÐÑли в ÑекÑиониÑованной ÑаблиÑе Ð½ÐµÑ ÑекÑии по ÑмолÑÐ°Ð½Ð¸Ñ (DEFAULT), Ñаковой можно назнаÑиÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð· новÑÑ ÑекÑий.ÐÑли в ÑекÑиониÑованной ÑаблиÑе и ÑÑеди новÑÑ ÑекÑий Ð½ÐµÑ ÑекÑии по ÑмолÑÐ°Ð½Ð¸Ñ (
DEFAULT), Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоблÑдаÑÑÑÑ ÑледÑÑÑие ÑÑловиÑ: ÑÑмма гÑÐ°Ð½Ð¸Ñ Ð²ÑÐµÑ Ð½Ð¾Ð²ÑÑ ÑекÑий (имÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ.д.) должна ÑавнÑÑÑÑÑ Ð³ÑаниÑе ÑазделÑемой ÑекÑииимÑ_ÑекÑии. Ðдна из новÑÑ ÑекÑийимÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ.д Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ðµ Ð¸Ð¼Ñ Ñ ÑазделÑемой ÑекÑиейимÑ_ÑекÑии(ÑÑо Ñдобно, еÑли ÑазделÑеÑÑÑ ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ: поÑле ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾ÑÑаÑÑÑÑ ÑекÑÐ¸Ñ Ñ Ñаким же именем). РазделÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑоÑÑÑе, еÑÑ Ð½Ðµ ÑазделÑннÑе ÑекÑии.ÐовÑе ÑекÑии ÑоздаÑÑÑÑ Ñак же, как ÑаблиÑÑ Ð¿Ñи помоÑи SQL-командÑ
CREATE TABLE. ÐндекÑÑ Ð¸ иденÑиÑикаÑоÑÑ ÑоздаÑÑÑÑ Ð¿Ð¾Ñле пеÑеноÑа даннÑÑ Ð² новÑе ÑекÑии. РаÑÑиÑÐµÐ½Ð½Ð°Ñ ÑÑаÑиÑÑика не копиÑÑеÑÑÑ Ð¸Ð· ÑодиÑелÑÑкой ÑаблиÑÑ Ð² ÑелÑÑ ÑоглаÑованноÑÑи Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹Ð¸Ð¼Ñ_ÑекÑииN(LIKEимÑINCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY EXCLUDING STATISTICS)CREATE TABLE PARTITION OF. ÐовÑе ÑекÑии наÑледÑÑÑ Ð¼ÐµÑод доÑÑÑпа Ð¾Ñ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑ. ÐÑли ÑодиÑелÑÑÐºÐ°Ñ ÑаблиÑа поÑÑоÑннаÑ, Ñо и новÑе ÑекÑии бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ ÐºÐ°Ðº поÑÑоÑннÑе. ÐÑли ÑодиÑелÑÑÐºÐ°Ñ ÑаблиÑа вÑеменнаÑ, Ñо и ÑекÑии бÑдÑÑ Ð²ÑеменнÑе. ÐовÑе ÑекÑии ÑоздаÑÑÑÑ Ð² Ñом же ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑо и ÑодиÑелÑÑкие.ÐÑимеÑание
ÐÐ°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° полÑÑÐ°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
ACCESS EXCLUSIVE. ÐÑи болÑÑой нагÑÑзке ÑÑо ÑеÑÑÑзно огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¸ÑполÑзование данной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð±Ð¾Ð»ÑÑими ÑекÑиониÑованнÑми ÑаблиÑами.MERGE PARTITIONS (#имÑ_ÑекÑии1,имÑ_ÑекÑии2[, ...]) INTOимÑ_ÑекÑииÐÑа ÑоÑма обÑединÑÐµÑ Ð½ÐµÑколÑко ÑекÑий в Ð¾Ð´Ð½Ñ ÑекÑÐ¸Ñ Ñелевой ÑаблиÑÑ. СекÑиониÑование по Ñ ÐµÑÑ Ð½Ðµ поддеÑживаеÑÑÑ. ÐÑли ÑекÑии по ÑмолÑаниÑ
DEFAULTÐ½ÐµÑ Ð² ÑпиÑке ÑекÑийимÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ. д.:ÐÐ»Ñ ÑаблиÑ, ÑекÑиониÑÑемÑÑ Ð¿Ð¾ диапазонам, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾, ÑÑÐ¾Ð±Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ ÑекÑий
имÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ. д. можно бÑло обÑединиÑÑ Ð² один диапазон без пÑобелов и пеÑеÑеÑений, инаÑе Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка. ÐбÑединÑннÑй диапазон вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ ÑекÑииимÑ_ÑекÑии.ÐÐ»Ñ ÑаблиÑ, ÑекÑиониÑÑемÑÑ Ð¿Ð¾ ÑпиÑкам, ÑпиÑки знаÑений вÑÐµÑ ÑекÑий
имÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ.д. ÑоединÑÑÑÑÑ Ð¸ ÑоÑмиÑÑÑÑ ÑпиÑок знаÑений ÑекÑииимÑ_ÑекÑии.
ÐÑли ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ
DEFAULTеÑÑÑ Ð² ÑпиÑке ÑекÑийимÑ_ÑекÑии1,имÑ_ÑекÑии2и Ñ. д.:СекÑиÑ
имÑ_ÑекÑииÑÑановиÑÑÑ ÑекÑией по ÑмолÑаниÑDEFAULT.ÐÐ»Ñ ÑаблиÑ, ÑекÑиониÑÑемÑÑ Ð¿Ð¾ диапазонам или ÑпиÑкам, Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ Ð¸Ð»Ð¸ ÑпиÑки знаÑений обÑединÑннÑÑ ÑекÑий могÑÑ Ð±ÑÑÑ Ð»ÑбÑми.
У новой ÑекÑии
имÑ_ÑекÑÐ¸Ð¸Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñакое же имÑ, как Ñ Ð¾Ð´Ð½Ð¾Ð¹ из обÑединÑннÑÑ ÑекÑий. ÐбÑединÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑоÑÑÑе, еÑÑ Ð½Ðµ ÑазделÑннÑе ÑекÑии.ÐÐ¾Ð²Ð°Ñ ÑекÑÐ¸Ñ ÑоздаÑÑÑÑ Ñак же, как ÑаблиÑа пÑи помоÑи SQL-командÑ
CREATE TABLE. ÐндекÑÑ Ð¸ иденÑиÑикаÑоÑÑ ÑоздаÑÑÑÑ Ð¿Ð¾Ñле пеÑеноÑа даннÑÑ Ð² новÑÑ ÑекÑиÑ. РаÑÑиÑÐµÐ½Ð½Ð°Ñ ÑÑаÑиÑÑика не копиÑÑеÑÑÑ Ð¸Ð· ÑодиÑелÑÑкой ÑаблиÑÑ Ð² ÑелÑÑ ÑоглаÑованноÑÑи Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹Ð¸Ð¼Ñ ÑекÑии(LIKEимÑINCLUDING ALL EXCLUDING INDEXES EXCLUDING IDENTITY EXCLUDING STATISTICS)CREATE TABLE PARTITION OF. ÐÐ¾Ð²Ð°Ñ ÑекÑÐ¸Ñ Ð½Ð°ÑледÑÐµÑ Ð¼ÐµÑод доÑÑÑпа Ð¾Ñ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑ. ÐÑли ÑодиÑелÑÑÐºÐ°Ñ ÑаблиÑа поÑÑоÑннаÑ, Ñо и Ð½Ð¾Ð²Ð°Ñ ÑекÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ñоздана как поÑÑоÑннаÑ. ÐÑли ÑодиÑелÑÑÐºÐ°Ñ ÑаблиÑа вÑеменнаÑ, Ñо и ÑекÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²Ñеменной. ÐÐ¾Ð²Ð°Ñ ÑекÑÐ¸Ñ ÑоздаÑÑÑÑ Ð² Ñом же ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑо и ÑодиÑелÑÑÐºÐ°Ñ ÑаблиÑа.ÐÑимеÑание
ÐÐ°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° полÑÑÐ°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ
ACCESS EXCLUSIVE. ÐÑи болÑÑой нагÑÑзке ÑÑо ÑеÑÑÑзно огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¸ÑполÑзование данной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð±Ð¾Ð»ÑÑими ÑекÑиониÑованнÑми ÑаблиÑами.
ÐÑе ÑоÑÐ¼Ñ ALTER TABLE, заÑÑагиваÑÑие Ð¾Ð´Ð½Ñ ÑаблиÑÑ, кÑоме RENAME, SET SCHEMA, ATTACH PARTITION, DETACH PARTITION, SPLIT PARTITION, а Ñакже MERGE PARTITIONS можно обÑединиÑÑ Ð² Ð½Ð°Ð±Ð¾Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвеннÑÑ
изменений и пÑимениÑÑ Ð²Ð¼ÐµÑÑе. ÐапÑимеÑ, можно добавиÑÑ Ð½ÐµÑколÑко ÑÑолбÑов и/или измениÑÑ Ñип ÑÑолбÑов в одной команде. ÐÑо оÑобенно полезно Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
ÑаблиÑ, Ñак как вÑÑ ÑаблиÑа обÑабаÑÑваеÑÑÑ Ð·Ð° один пÑоÑ
од.
ÐÑполниÑÑ ALTER TABLE Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑей ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ Ð¸Ð»Ð¸ ÑаблиÑное пÑоÑÑÑанÑÑво ÑаблиÑÑ, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме или ÑаблиÑном пÑоÑÑÑанÑÑве. ЧÑÐ¾Ð±Ñ ÑделаÑÑ ÑаблиÑÑ Ð¿Ð¾Ñомком дÑÑгой ÑаблиÑÑ, нÑжно бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем и ÑодиÑелÑÑкой ÑаблиÑÑ. Также, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´ÑоединиÑÑ ÑаблиÑÑ Ðº дÑÑгой в каÑеÑÑве ÑекÑии, необÑ
одимо бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем подÑоединÑемой ÑаблиÑÑ. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо имеÑÑ Ð¿Ñаво SET ROLE Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме ÑаблиÑÑ. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ ÑаблиÑÑ. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑаблиÑÑ Ð² лÑбом ÑлÑÑае.) ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÑÑолбеÑ, ÑмениÑÑ Ñип ÑÑолбÑа или пÑимениÑÑ Ð¿Ñедложение OF, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего Ñипа даннÑÑ
.
ÐаÑамеÑÑÑ
IF EXISTS#Ðе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли ÑаблиÑа не ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание.
имÑ#ÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) ÑÑÑеÑÑвÑÑÑей ÑаблиÑÑ, подлежаÑей изменениÑ. ÐÑли пеÑед именем ÑаблиÑÑ Ñказано
ONLY, изменÑеÑÑÑ ÑолÑко Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа. ÐезONLYизменÑеÑÑÑ Ð¸ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, и вÑе ÐµÑ Ð¿Ð¾Ñомки (еÑли ÑаковÑе еÑÑÑ). ÐоÑле имени ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñакже добавиÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑное Ñказание*, ÑÑÐ¾Ð±Ñ Ñвно обознаÑиÑÑ, ÑÑо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð²Ñе доÑеÑние ÑаблиÑÑ.имÑ_ÑÑолбÑа#ÐÐ¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ или ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
новое_имÑ_ÑÑолбÑа#Ðовое Ð¸Ð¼Ñ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
новое_имÑ#Ðовое Ð¸Ð¼Ñ ÑаблиÑÑ.
Ñип_даннÑÑ#Тип даннÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑолбÑа или новÑй Ñип даннÑÑ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
огÑаниÑение_ÑаблиÑÑ#Ðовое огÑаниÑение ÑаблиÑÑ.
имÑ_огÑаниÑениÑ#ÐÐ¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ или ÑÑÑеÑÑвÑÑÑего огÑаниÑениÑ.
CASCADE#ÐвÑомаÑиÑеÑки ÑдалÑÑÑ Ð¾Ð±ÑекÑÑ, завиÑÑÑие Ð¾Ñ ÑдалÑемого ÑÑолбÑа или огÑаниÑÐµÐ½Ð¸Ñ (напÑимеÑ, пÑедÑÑавлениÑ, ÑодеÑжаÑие ÑÑÐ¾Ñ ÑÑолбеÑ), и, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, вÑе завиÑÑÑие Ð¾Ñ Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ (Ñм. Раздел 5.15).
RESTRICT#ÐÑказаÑÑ Ð² Ñдалении ÑÑолбÑа или огÑаниÑениÑ, еÑли ÑÑÑеÑÑвÑÑÑ Ð·Ð°Ð²Ð¸ÑÑÑие Ð¾Ñ Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ. ÐÑо поведение по ÑмолÑаниÑ.
имÑ_ÑÑиггеÑа#ÐÐ¼Ñ Ð²ÐºÐ»ÑÑаемого или оÑклÑÑаемого ÑÑиггеÑа.
ALL#ÐÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð²Ñе ÑÑиггеÑÑ, пÑинадлежаÑие ÑаблиÑе. (ÐÐ»Ñ ÑÑого ÑÑебÑÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ, еÑли в ÑиÑле ÑÑÐ¸Ñ ÑÑиггеÑов оказÑваÑÑÑÑ ÑгенеÑиÑованнÑе внÑÑÑиÑиÑÑемнÑе ÑÑиггеÑÑ Ð¸ÑклÑÑений, напÑÐ¸Ð¼ÐµÑ Ñе, ÑÑо ÑеализÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и иÑклÑÑений.)
USER#ÐÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ Ð²Ñе ÑÑиггеÑÑ, пÑинадлежаÑие ÑаблиÑе, за иÑклÑÑением ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑиÑиÑÑемнÑÑ ÑÑиггеÑов иÑклÑÑений, напÑимеÑ, ÑÐµÑ , ÑÑо ÑеализÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа или оÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и иÑклÑÑений.
имÑ_индекÑа#ÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего индекÑа.
паÑамеÑÑ_Ñ ÑанениÑ#ÐÐ¼Ñ Ð¿Ð°ÑамеÑÑа Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ
знаÑение#Ðовое знаÑение паÑамеÑÑа Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑиÑло или ÑÑÑока, в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа.
ÑаблиÑа_ÑодиÑелÑ#РодиÑелÑÑÐºÐ°Ñ ÑаблиÑа, Ñ ÐºÐ¾ÑоÑой бÑÐ´ÐµÑ ÑÑÑановлена или ÑазоÑвана ÑвÑÐ·Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ.
новÑй_владелеÑ#ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем ÑаблиÑÑ.
новÑй_меÑод_доÑÑÑпа#ÐÐ¼Ñ Ð¼ÐµÑода доÑÑÑпа, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑаблиÑÑ Ð¿Ð¾Ñле ÐµÑ Ð¿ÑеобÑазованиÑ.
новое_Ñабл_пÑоÑÑÑанÑÑво#ÐÐ¼Ñ ÑаблиÑного пÑоÑÑÑанÑÑва, в коÑоÑое бÑÐ´ÐµÑ Ð¿ÐµÑемеÑена ÑаблиÑа.
новаÑ_ÑÑ ÐµÐ¼Ð°#ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, в коÑоÑÑÑ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑемеÑена ÑаблиÑа.
имÑ_ÑекÑии#ÐÐ¼Ñ ÑаблиÑÑ, пÑиÑоединÑемой в каÑеÑÑве новой ÑекÑии, или наобоÑоÑ, оÑÑоединÑемой Ð¾Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ, или Ð¸Ð¼Ñ ÑазделÑемой ÑекÑии, или Ð¸Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð¹ обÑединÑемой ÑекÑии.
Ñказание_гÑаниÑ_ÑекÑии#Указание гÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑекÑии. ÐодÑобнее ÑинÑакÑÐ¸Ñ ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑаÑÑмаÑÑиваеÑÑÑ Ð² опиÑании CREATE TABLE.
ÐамеÑÐ°Ð½Ð¸Ñ #
ÐлÑÑевое Ñлово COLUMN не неÑÑÑ ÑмÑÑловой нагÑÑзки и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено.
Ðогда конÑÑÑÑкÑÐ¸Ñ ADD COLUMN добавлÑÐµÑ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ задано неизменÑивое вÑÑажение DEFAULT, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑÑиÑлÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа и ÑоÑ
ÑанÑеÑÑÑ Ð² меÑаданнÑÑ
ÑаблиÑÑ. ÐÑо знаÑение заÑем бÑÐ´ÐµÑ Ð¸ÑполÑзовано в каÑеÑÑве ÑодеÑжимого ÑÑолбÑа Ð´Ð»Ñ Ð²ÑеÑ
ÑÑÑеÑÑвÑÑÑиÑ
ÑÑÑок. ÐÑо знаÑение пÑименÑеÑÑÑ ÑолÑко пÑи пеÑезапиÑи ÑаблиÑÑ, поÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ALTER TABLE вÑполнÑеÑÑÑ Ð¾ÑÐµÐ½Ñ Ð±ÑÑÑÑо, даже Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
ÑаблиÑ. ÐÑли огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа не ÑказанÑ, в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ NULL. РлÑбом ÑлÑÑае пеÑезапиÑÑ ÑаблиÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ.
Ðобавление ÑÑолбÑа Ñ Ð¸Ð·Ð¼ÐµÐ½ÑивÑм вÑÑажением DEFAULT (напÑимеÑ, clock_timestamp()), Ñ
Ñанимого вÑÑиÑлÑемого ÑÑолбÑа, ÑÑолбÑа иденÑиÑикаÑии или ÑÑолбÑа Ñ Ð´Ð¾Ð¼ÐµÐ½Ð½Ñм Ñипом даннÑÑ
, имеÑÑим огÑаниÑениÑ, влеÑÑÑ Ð·Ð° Ñобой пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ Ð¸ ÐµÑ Ð¸Ð½Ð´ÐµÐºÑов. Ðобавление виÑÑÑалÑного вÑÑиÑлÑемого ÑÑолбÑа не ÑÑебÑÐµÑ Ð¿ÐµÑезапиÑи.
Ðзменение Ñипа ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа обÑÑно влеÑÑÑ Ð·Ð° Ñобой пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ Ð¸ ÐµÑ Ð¸Ð½Ð´ÐµÐºÑов. Ðо возможно иÑклÑÑение пÑи Ñмене Ñипа ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа: еÑли пÑедложение USING не менÑÐµÑ ÑодеÑжимое ÑÑолбÑа и ÑÑаÑÑй Ñип двоиÑно пÑиводиÑÑÑ Ðº Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¸Ð»Ð¸ ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð³ÑаниÑеннÑм доменом повеÑÑ
нового Ñипа, Ñо пеÑезапиÑÑ ÑаблиÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ. Тем не менее индекÑÑ Ð±ÑдÑÑ Ð¿ÐµÑеÑÑÑаиваÑÑÑÑ Ð² лÑбом ÑлÑÑае, кÑоме ÑлÑÑаев, когда ÑиÑÑема Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ, ÑÑо новÑй Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑки ÑквиваленÑен ÑÑÑеÑÑвÑÑÑемÑ. ÐапÑимеÑ, когда менÑеÑÑÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ ÑÑолбÑа, Ð¸Ð½Ð´ÐµÐºÑ ÑÑебÑеÑÑÑ Ð¿ÐµÑеÑÑÑоиÑÑ, Ñак как новÑй поÑÑдок ÑоÑÑиÑовки Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´ÑÑгим. Ðднако еÑли пÑавило ÑоÑÑиÑовки не менÑеÑÑÑ, Ñип ÑÑолбÑа можно поменÑÑÑ Ñ text на varchar (или наобоÑоÑ) без пеÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов, Ñак как ÑÑи ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑоÑÑиÑÑÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾.
ÐеÑеÑÑÑоение болÑÑÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸/или Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÐµÑÑма длиÑелÑной пÑоÑедÑÑой, коÑоÑÐ°Ñ Ð¿Ñи ÑÑом вÑеменно ÑÑебÑÐµÑ Ð²Ð´Ð²Ð¾Ðµ болÑÑе меÑÑа на диÑке.
Ðобавление огÑаниÑÐµÐ½Ð¸Ñ CHECK или NOT NULL влеÑÑÑ Ð·Ð° Ñобой необÑ
одимоÑÑÑ Ð¿ÑоÑканиÑоваÑÑ ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, ÑÑо вÑе ÑÑÑеÑÑвÑÑÑие ÑÑÑоки ÑдовлеÑвоÑÑÑÑ Ð¾Ð³ÑаниÑениÑ, но пеÑезапиÑÑваÑÑ ÑаблиÑÑ Ð¿Ñи ÑÑом не ÑÑебÑеÑÑÑ. ÐÑли огÑаниÑение CHECK добавлÑеÑÑÑ Ñ Ð¿Ð°ÑамеÑÑом NOT ENFORCED, пÑовеÑка вÑполнÑÑÑÑÑ Ð½Ðµ бÑдеÑ.
ÐодобнÑм обÑазом, пÑи пÑиÑоединении новой ÑекÑии Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизводиÑÑÑÑ ÐµÑ ÑканиÑование Ð´Ð»Ñ Ð¿ÑовеÑки, ÑооÑвеÑÑÑвÑÑÑ Ð»Ð¸ ÑÑÑеÑÑвÑÑÑие ÑÑÑоки огÑаниÑÐµÐ½Ð¸Ñ ÑекÑии.
ÐозможноÑÑÑ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑва изменений в Ð¾Ð´Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER TABLE полезна в оÑновном Ñем, ÑÑо позволÑÐµÑ ÑовмеÑÑиÑÑ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ пеÑезапиÑи ÑаблиÑÑ, ÑÑебÑемÑе ÑÑим опеÑаÑиÑм, и вÑполниÑÑ Ð¸Ñ
за один пÑоÑ
од.
СканиÑование болÑÑой ÑаблиÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки нового внеÑнего клÑÑа, огÑаниÑÐµÐ½Ð¸Ñ CHECK или NOT NULL Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð´Ð»Ð¸ÑелÑное вÑÐµÐ¼Ñ Ð¸ бÑÐ´ÐµÑ Ð¿ÑепÑÑÑÑвоваÑÑ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð´ÑÑгиÑ
изменений до ÑикÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ 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. Таким обÑазом, Ñдаление ÑÑолбÑа вÑполнÑеÑÑÑ Ð±ÑÑÑÑо, но пÑи ÑÑом ÑÐ°Ð·Ð¼ÐµÑ ÑаблиÑÑ Ð½Ð° диÑке не ÑменÑÑаеÑÑÑ, Ñак как пÑоÑÑÑанÑÑво, занимаемое ÑдалÑннÑм ÑÑолбÑом, не вÑÑвобождаеÑÑÑ. ÐÑо пÑоÑÑÑанÑÑво бÑÐ´ÐµÑ Ð¾Ñвобождено Ñо вÑеменем, по меÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑеÑÑвÑÑÑиÑ
ÑÑÑок.
ЧÑÐ¾Ð±Ñ Ð¿ÑинÑдиÑелÑно вÑÑвободиÑÑ Ð¿ÑоÑÑÑанÑÑво, занимаемое ÑÑолбÑом, коÑоÑÑй бÑл ÑдалÑн, можно вÑполниÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð· ÑоÑм ALTER TABLE, пÑоизводÑÑиÑ
пеÑезапиÑÑ Ð²Ñей ÑаблиÑÑ. Ð ÑезÑлÑÑаÑе вÑе ÑÑÑоки бÑдÑÑ Ð²Ð¾ÑÑÐ¾Ð·Ð´Ð°Ð½Ñ Ñак, ÑÑо в ÑдалÑнном ÑÑолбÑе бÑÐ´ÐµÑ ÑодеÑжаÑÑÑÑ NULL.
ÐеÑезапиÑÑваÑÑие ÑоÑÐ¼Ñ ALTER TABLE небезопаÑÐ½Ñ Ñ ÑоÑки зÑÐµÐ½Ð¸Ñ MVCC. ÐоÑле пеÑезапиÑи ÑаблиÑа бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ð¿ÑÑÑой Ð´Ð»Ñ Ð¿Ð°ÑаллелÑнÑÑ
ÑÑанзакÑий, еÑли они ÑабоÑаÑÑ Ñо Ñнимком, полÑÑеннÑм до моменÑа пеÑезапиÑи. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 13.6.
Ð Ñказании USING пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ SET DATA TYPE на Ñамом деле можно запиÑаÑÑ Ð²ÑÑажение Ñо ÑÑаÑÑми знаÑениÑми ÑÑÑоки; Ñо еÑÑÑ, оно Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ ÐºÐ°Ðº на пÑеобÑазÑемÑе ÑÑолбÑÑ, Ñак и на дÑÑгие. ÐÑо позволÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð² SET DATA TYPE оÑÐµÐ½Ñ Ð¾Ð±Ñие пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÐ²Ð¸Ð´Ñ Ñакой гибкоÑÑи, вÑÑажение USING не пÑименÑеÑÑÑ Ðº знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÑолбÑа (еÑли Ñаковое еÑÑÑ); ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ конÑÑанÑнÑм вÑÑажением, ÑÑо ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑо ознаÑаеÑ, ÑÑо в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñвного пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑаÑого Ñипа новомÑ, SET DATA TYPE Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑпÑавиÑÑÑÑ Ñ Ð¿ÑеобÑазованием знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, неÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо пÑименÑеÑÑÑ Ð¿Ñедложение USING. Ð ÑÑиÑ
ÑлÑÑаÑÑ
нÑжно ÑдалиÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ DROP DEFAULT, вÑполниÑÑ ALTER TYPE, а заÑем Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ SET DEFAULT задаÑÑ Ð½Ð¾Ð²Ð¾Ðµ подÑ
одÑÑее знаÑение по ÑмолÑаниÑ. ÐодобнÑе ÑообÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð¸ в оÑноÑении индекÑов и огÑаниÑений Ñ ÑÑим ÑÑолбÑом.
ÐÑли Ñ ÑаблиÑÑ Ð¸Ð¼ÐµÑÑÑÑ Ð´Ð¾ÑеÑние ÑаблиÑÑ, Ñо добавлÑÑÑ, пеÑеименовÑваÑÑ ÑÑолбÑÑ Ð¸Ð»Ð¸ менÑÑÑ Ð¸Ñ
Ñип в ÑодиÑелÑÑкой ÑаблиÑе, не повÑоÑÑÑ ÑÑ Ð¶Ðµ опеÑаÑÐ¸Ñ Ð² доÑеÑниÑ
ÑаблиÑаÑ
, нелÑзÑ. ÐÑо пÑавило гаÑанÑиÑÑеÑ, ÑÑо ÑÑолбÑÑ Ð² доÑеÑниÑ
ÑаблиÑаÑ
вÑегда ÑооÑвеÑÑÑвÑÑÑ ÑодиÑелÑÑкой. ÐодобнÑм обÑазом, нелÑÐ·Ñ Ð¿ÐµÑеименоваÑÑ Ð¾Ð³ÑаниÑение CHECK в ÑодиÑелÑÑкой ÑаблиÑе, не пеÑеименовÑÐ²Ð°Ñ ÐµÐ³Ð¾ во вÑеÑ
доÑеÑниÑ
ÑаблиÑаÑ
, ÑÑо Ñоже гаÑанÑиÑÑÐµÑ ÑооÑвеÑÑÑвие вÑеÑ
огÑаниÑений CHECK. (Ðднако ÑÑо не каÑаеÑÑÑ Ð¾Ð³ÑаниÑений, поÑÑÑоеннÑÑ
на индекÑаÑ
.) Ð Ñак как вÑбоÑка из ÑодиÑелÑÑкой ÑаблиÑÑ Ð²Ð»ÐµÑÑÑ Ð·Ð° Ñобой вÑбоÑÐºÑ Ð¸Ð· вÑеÑ
поÑомков, огÑаниÑение ÑодиÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð¼ÐµÑено как дейÑÑвÑÑÑее, еÑли оно Ñакже не ÑвлÑеÑÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑим в поÑомкаÑ
. Ðо вÑеÑ
ÑÑиÑ
ÑлÑÑаÑÑ
команда ALTER TABLE ONLY не бÑÐ´ÐµÑ Ð²Ñполнена.
РекÑÑÑÐ¸Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ DROP COLUMN ÑÐ´Ð°Ð»Ð¸Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð· доÑеÑней ÑаблиÑÑ, ÑолÑко еÑли ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ наÑледÑеÑÑÑ Ð¾Ñ ÐºÐ°ÐºÐ¸Ñ
-Ñо дÑÑгиÑ
ÑодиÑелей и никогда не бÑл опÑеделÑн в доÑеÑней ÑаблиÑе незавиÑимо. ÐеÑекÑÑÑÐ¸Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ DROP COLUMN (Ñ. е., ALTER TABLE ONLY ... DROP COLUMN) никогда не ÑдалÑÐµÑ ÑнаÑледованнÑе ÑÑолбÑÑ; вмеÑÑо ÑÑого она помеÑÐ°ÐµÑ Ð¸Ñ
как незавиÑимо опÑеделÑннÑе, а не наÑледÑемÑе. С ÑекÑиониÑованной ÑаблиÑей неÑекÑÑÑÐ¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° DROP COLUMN вÑдаÑÑ Ð¾ÑибкÑ, Ñак как вÑе ÑекÑии ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑодеÑжаÑÑ Ñе же ÑÑолбÑÑ, ÑÑо и Ð³Ð»Ð°Ð²Ð½Ð°Ñ ÑаблиÑа.
ÐейÑÑÐ²Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑов иденÑиÑикаÑии (ADD GENERATED, SET и Ñ. д., DROP IDENTITY), а Ñакже дейÑÑÐ²Ð¸Ñ CLUSTER, OWNER и TABLESPACE, никогда не ÑаÑпÑоÑÑÑанÑÑÑÑÑ ÑекÑÑÑивно на доÑеÑние ÑаблиÑÑ; Ñо еÑÑÑ Ð¾Ð½Ð¸ вÑегда вÑполнÑÑÑÑÑ Ñак, как бÑдÑо Ñказано ONLY. ÐейÑÑвиÑ, влиÑÑÑие на ÑоÑÑоÑÐ½Ð¸Ñ ÑÑиггеÑов, ÑаÑпÑоÑÑÑанÑÑÑÑÑ ÑекÑÑÑивно на ÑекÑии ÑекÑиониÑованнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ (еÑли не Ñказано ONLY), но не на поÑомков в ÑÑадиÑионной иеÑаÑÑ
ии наÑледованиÑ. ÐпеÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²ÑполнÑеÑÑÑ ÑекÑÑÑивно ÑолÑко Ð´Ð»Ñ Ð¾Ð³ÑаниÑений CHECK, не помеÑеннÑÑ
как NO INHERIT.
Ðакие-либо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ ÑиÑÑемного каÑалога не допÑÑкаÑÑÑÑ.
Ðа более подÑобнÑм опиÑанием допÑÑÑимÑÑ Ð¿Ð°ÑамеÑÑов обÑаÑиÑеÑÑ Ðº CREATE TABLE. ÐополниÑелÑно о наÑледовании можно ÑзнаÑÑ Ð² Ðлаве 5.
ÐÑимеÑÑ
Ðобавление в ÑаблиÑÑ ÑÑолбÑа Ñипа varchar:
ALTER TABLE distributors ADD COLUMN address varchar(30);
ÐÑи ÑÑом во вÑÐµÑ ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÑÑÐ¾ÐºÐ°Ñ ÑаблиÑÑ Ð½Ð¾Ð²Ñй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ð¾Ð»ÑÑÐ¸Ñ Ð·Ð½Ð°Ñение null.
Ðобавление ÑÑолбÑа Ñо знаÑением по ÑмолÑÐ°Ð½Ð¸Ñ (оÑлиÑнÑм Ð¾Ñ NULL):
ALTER TABLE measurements ADD COLUMN mtime timestamp with time zone DEFAULT now();
Ð ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÑÑÐ¾ÐºÐ°Ñ Ð½Ð¾Ð²Ñй ÑÑÐ¾Ð»Ð±ÐµÑ Ð±ÑÐ´ÐµÑ ÑодеÑжаÑÑ ÑекÑÑее вÑемÑ, а в добавлÑемÑÑ Ð²Ð¿Ð¾ÑледÑÑвии ÑÑÑÐ¾ÐºÐ°Ñ â вÑÐµÐ¼Ñ Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ.
Ðобавление ÑÑолбÑа и заполнение его знаÑением, оÑлиÑнÑм Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, коÑоÑое бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² далÑнейÑем:
ALTER TABLE transactions ADD COLUMN status varchar(30) DEFAULT 'old', ALTER COLUMN status SET default 'current';
СÑÑеÑÑвÑÑÑие ÑÑÑоки бÑдÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ñ Ð·Ð½Ð°Ñением old, но Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑиÑ
команд знаÑением по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ current. РезÑлÑÑÐ°Ñ ÑÑиÑ
двÑÑ
Ñказаний в одной команде бÑÐ´ÐµÑ Ñаким же, как и пÑи вÑполнении иÑ
в оÑделÑнÑÑ
командаÑ
ALTER TABLE.
Удаление ÑÑолбÑа из ÑаблиÑÑ:
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;
Ðобавление огÑаниÑÐµÐ½Ð¸Ñ CHECK в ÑаблиÑÑ Ð¸ во вÑе ÐµÑ Ð¿Ð¾Ñомки:
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
Ðобавление огÑаниÑÐµÐ½Ð¸Ñ CHECK ÑолÑко в ÑаблиÑÑ, но не в ÐµÑ Ð¿Ð¾Ñомки:
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5) NO INHERIT;
(Ðанное огÑаниÑение CHECK не бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð¸ бÑдÑÑими поÑомками Ñоже.)
Удаление огÑаниÑÐµÐ½Ð¸Ñ CHECK из ÑаблиÑÑ Ð¸ из вÑеÑ
ÐµÑ Ð¿Ð¾Ñомков:
ALTER TABLE distributors DROP CONSTRAINT zipchk;
Удаление огÑаниÑÐµÐ½Ð¸Ñ CHECK ÑолÑко из Ñамой ÑаблиÑÑ:
ALTER TABLE ONLY distributors DROP CONSTRAINT zipchk;
(ÐгÑаниÑение CHECK оÑÑаÑÑÑÑ Ð²Ð¾ вÑеÑ
доÑеÑниÑ
ÑаблиÑаÑ
.)
Ðобавление в ÑаблиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
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;ÐÑиÑоединение ÑекÑии к ÑаблиÑе, ÑекÑиониÑÑемой по диапазонам:
ALTER TABLE measurement
ATTACH PARTITION measurement_y2016m07 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01');ÐÑиÑоединение ÑекÑии к ÑаблиÑе, ÑекÑиониÑÑемой по ÑпиÑкÑ:
ALTER TABLE cities
ATTACH PARTITION cities_ab FOR VALUES IN ('a', 'b');ÐÑиÑоединение ÑекÑии к ÑаблиÑе, ÑекÑиониÑÑемой по Ñ ÐµÑÑ:
ALTER TABLE orders
ATTACH PARTITION orders_p4 FOR VALUES WITH (MODULUS 4, REMAINDER 3);ÐÑиÑоединение ÑекÑии по ÑмолÑÐ°Ð½Ð¸Ñ Ðº ÑекÑиониÑованной ÑаблиÑе:
ALTER TABLE cities
ATTACH PARTITION cities_partdef DEFAULT;Удаление ÑекÑии из ÑекÑиониÑованной ÑаблиÑÑ:
ALTER TABLE measurement
DETACH PARTITION measurement_y2015m12;Разделение ÑекÑии ÑаблиÑÑ, ÑекÑиониÑованной по диапазонам:
ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2023 INTO
(PARTITION sales_feb2023 FOR VALUES FROM ('2023-02-01') TO ('2023-03-01'),
PARTITION sales_mar2023 FOR VALUES FROM ('2023-03-01') TO ('2023-04-01'),
PARTITION sales_apr2023 FOR VALUES FROM ('2023-04-01') TO ('2023-05-01'));Разделение ÑекÑии ÑаблиÑÑ, ÑекÑиониÑованной по ÑпиÑкÑ:
ALTER TABLE sales_list SPLIT PARTITION sales_all INTO
(PARTITION sales_west FOR VALUES IN ('Lisbon', 'New York', 'Madrid'),
PARTITION sales_east FOR VALUES IN ('Bejing', 'Delhi', 'Vladivostok'),
PARTITION sales_central FOR VALUES IN ('Warsaw', 'Berlin', 'Kyiv'));ÐбÑединение неÑколÑÐºÐ¸Ñ ÑекÑий в Ð¾Ð´Ð½Ñ Ð² Ñелевой ÑаблиÑе:
ALTER TABLE sales_list MERGE PARTITIONS (sales_west, sales_east, sales_central)
INTO sales_all;СовмеÑÑимоÑÑÑ
ФоÑÐ¼Ñ ADD [COLUMN], DROP [COLUMN], DROP IDENTITY, RESTART, SET DEFAULT, SET DATA TYPE (без USING), SET GENERATED и SET ÑооÑвеÑÑÑвÑÑÑ ÑÑандаÑÑÑ SQL. ФоÑма паÑамеÑÑ_поÑледоваÑелÑноÑÑиADD ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ SQL, еÑли пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑение_ÑаблиÑÑUSING INDEX и NOT VALID не иÑполÑзÑÑÑÑÑ, а Ñип огÑаниÑÐµÐ½Ð¸Ñ â один из ÑледÑÑÑиÑ
: CHECK, UNIQUE, PRIMARY KEY или REFERENCES. ÐÑÑгие ÑоÑÐ¼Ñ ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми ÑÑандаÑÑа SQL, ÑеализованнÑми в Postgres Pro. ÐÑоме Ñого, ÑаÑÑиÑением ÑвлÑеÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑказаÑÑ Ð² одной команде ALTER TABLE неÑколÑко опеÑаÑий изменениÑ.
ALTER TABLE DROP COLUMN позволÑÐµÑ ÑдалиÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑй ÑÑÐ¾Ð»Ð±ÐµÑ ÑаблиÑÑ Ð¸ оÑÑавиÑÑ ÑаблиÑÑ Ð±ÐµÐ· ÑÑолбÑов. ÐÑо ÑвлÑеÑÑÑ ÑаÑÑиÑением ÑÑандаÑÑа SQL, коÑоÑÑй не допÑÑÐºÐ°ÐµÑ ÑÑÑеÑÑвование ÑÐ°Ð±Ð»Ð¸Ñ Ñ Ð½ÑлÑм ÑÑолбÑов.