CREATE TABLE
CREATE TABLE â ÑоздаÑÑ ÑаблиÑÑ
СинÑакÑиÑ
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] имÑ_ÑаблиÑÑ ( [
{ имÑ_ÑÑолбÑа Ñип_даннÑÑ
[ COLLATE пÑавило_ÑоÑÑиÑовки ] [ огÑаниÑение_ÑÑолбÑа [ ... ] ]
| огÑаниÑение_ÑаблиÑÑ
| LIKE иÑÑ
однаÑ_ÑаблиÑа [ ваÑианÑ_копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ... ] }
[, ... ]
] )
[ INHERITS ( ÑаблиÑа_ÑодиÑÐµÐ»Ñ [, ... ] ) ]
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] имÑ_ÑаблиÑÑ
OF имÑ_Ñипа [ (
{ имÑ_ÑÑолбÑа WITH OPTIONS [ огÑаниÑение_ÑÑолбÑа [ ... ] ]
| огÑаниÑение_ÑаблиÑÑ }
[, ... ]
) ]
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
ÐдеÑÑ Ð¾Ð³ÑаниÑение_ÑÑолбÑа:
[ CONSTRAINT имÑ_огÑаниÑÐµÐ½Ð¸Ñ ]
{ NOT NULL |
NULL |
CHECK ( вÑÑажение ) [ NO INHERIT ] |
DEFAULT вÑÑажение_по_ÑмолÑÐ°Ð½Ð¸Ñ |
UNIQUE паÑамеÑÑÑ_индекÑа |
PRIMARY KEY паÑамеÑÑÑ_индекÑа |
REFERENCES ÑелеваÑ_ÑаблиÑа [ ( Ñелевой_ÑÑÐ¾Ð»Ð±ÐµÑ ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE дейÑÑвие ] [ ON UPDATE дейÑÑвие ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
и огÑаниÑение_ÑаблиÑÑ:
[ CONSTRAINT имÑ_огÑаниÑÐµÐ½Ð¸Ñ ]
{ CHECK ( вÑÑажение ) [ NO INHERIT ] |
UNIQUE ( имÑ_ÑÑолбÑа [, ... ] ) паÑамеÑÑÑ_индекÑа [INCLUDING (имÑ_ÑÑолбÑа [, ...])] |
PRIMARY KEY ( имÑ_ÑÑолбÑа [, ... ] ) паÑамеÑÑÑ_индекÑа [INCLUDING (имÑ_ÑÑолбÑа [, ...])] |
EXCLUDE [ USING индекÑнÑй_меÑод ] ( ÑлеменÑ_иÑклÑÑÐµÐ½Ð¸Ñ WITH опеÑаÑÐ¾Ñ [, ... ] ) паÑамеÑÑÑ_индекÑа [ WHERE ( пÑÐµÐ´Ð¸ÐºÐ°Ñ ) ] |
FOREIGN KEY ( имÑ_ÑÑолбÑа [, ... ] ) REFERENCES ÑелеваÑ_ÑаблиÑа [ ( Ñелевой_ÑÑÐ¾Ð»Ð±ÐµÑ [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE дейÑÑвие ] [ ON UPDATE дейÑÑвие ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
и ваÑианÑ_копиÑованиÑ:
{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }
паÑамеÑÑÑ_индекÑа в огÑаниÑениÑÑ
UNIQUE, PRIMARY KEY и EXCLUDE:
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) ]
[ USING INDEX TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
ÑлеменÑ_иÑклÑÑÐµÐ½Ð¸Ñ Ð² огÑаниÑении EXCLUDE:
{ имÑ_ÑÑолбÑа | ( вÑÑажение ) } [ клаÑÑ_опеÑаÑоÑов ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]ÐпиÑание
CREATE TABLE ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ, изнаÑалÑно пÑÑÑÑÑ ÑаблиÑÑ Ð² ÑекÑÑей базе даннÑÑ
. ÐладелÑÑем ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, вÑполнивÑий ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ.
ÐÑли задано Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ (напÑимеÑ, CREATE TABLE myschema.mytable ...), ÑаблиÑа ÑоздаÑÑÑÑ Ð² Ñказанной ÑÑ
еме, в пÑоÑивном ÑлÑÑае â в ÑекÑÑей. ÐÑеменнÑе ÑаблиÑÑ ÑÑÑеÑÑвÑÑÑ Ð² ÑпеÑиалÑной ÑÑ
еме, Ñак ÑÑо пÑи Ñоздании ÑакиÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑ Ð½ÐµÐ»ÑзÑ. ÐÐ¼Ñ ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð¾ оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð¼Ñн дÑÑгиÑ
ÑаблиÑ, поÑледоваÑелÑноÑÑей, индекÑов, пÑедÑÑавлений или ÑÑоÑонниÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð² ÑÑой ÑÑ
еме.
CREATE TABLE Ñакже авÑомаÑиÑеÑки ÑоздаÑÑ ÑоÑÑавной Ñип даннÑÑ
, ÑооÑвеÑÑÑвÑÑÑий одной ÑÑÑоке ÑаблиÑÑ. Таким обÑазом, Ð¸Ð¼Ñ ÑаблиÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ ÑовпадаÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑÑеÑÑвÑÑÑего Ñипа в ÑÑой же ÑÑ
еме.
ÐеобÑзаÑелÑнÑе пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑений задаÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ (пÑовеÑки), коÑоÑÑм Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдовлеÑвоÑÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑемÑе или изменÑемÑе ÑÑÑоки, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñла вÑполнена ÑÑпеÑно. ÐгÑаниÑение пÑедÑÑавлÑÐµÑ Ñобой SQL-обÑекÑ, помогаÑÑий некоÑоÑÑм ÑпоÑобом опÑеделиÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво допÑÑÑимÑÑ Ð·Ð½Ð°Ñений в ÑаблиÑе.
ÐпÑеделиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ двÑÐ¼Ñ ÑпоÑобами: в виде огÑаниÑений ÑаблиÑÑ Ð¸ в виде огÑаниÑений ÑÑолбÑа. ÐгÑаниÑение ÑÑолбÑа опÑеделÑеÑÑÑ ÐºÐ°Ðº ÑаÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑа, а огÑаниÑение ÑаблиÑÑ Ð½Ðµ пÑивÑзÑваеÑÑÑ Ðº конкÑеÑÐ½Ð¾Ð¼Ñ ÑÑолбÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ Ð½ÐµÑколÑко ÑÑолбÑов. ÐÑбÑе огÑаниÑÐµÐ½Ð¸Ñ ÑÑолбÑов можно Ñакже запиÑаÑÑ Ð² виде огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ, они Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð¿ÑоÑÑо Ð´Ð»Ñ ÑдобÑÑва запиÑи в ÑлÑÑаÑÑ , когда огÑаниÑение заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ ÑолÑко один ÑÑолбеÑ.
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑаблиÑÑ, необÑ
одимо имеÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ Ñипов вÑеÑ
ÑÑолбÑов или Ñипа в пÑедложении OF, ÑооÑвеÑÑÑвенно.
ÐаÑамеÑÑÑ
TEMPORARYилиTEMPС Ñаким Ñказанием ÑаблиÑа ÑоздаÑÑÑÑ ÐºÐ°Ðº вÑеменнаÑ. ÐÑеменнÑе ÑаблиÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑдалÑÑÑÑÑ Ð² конÑе ÑеанÑа или могÑÑ ÑдалÑÑÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии (Ñм. опиÑание
ON COMMITниже). СÑÑеÑÑвÑÑÑÐ°Ñ Ð¿Ð¾ÑÑоÑÐ½Ð½Ð°Ñ ÑаблиÑа Ñ Ñем же именем не бÑÐ´ÐµÑ Ð²Ð¸Ð´Ð½Ð° в ÑекÑÑем ÑеанÑе, пока ÑÑÑеÑÑвÑÐµÑ Ð²ÑеменнаÑ, однако к ней можно обÑаÑиÑÑÑÑ, дополнив Ð¸Ð¼Ñ Ñказанием ÑÑ ÐµÐ¼Ñ. ÐÑе индекÑÑ, ÑоздаваемÑе Ð´Ð»Ñ Ð²Ñеменной ÑаблиÑÑ, Ñак же авÑомаÑиÑеÑки ÑÑановÑÑÑÑ Ð²ÑеменнÑми.Ðемон авÑооÑиÑÑки не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑиÑаÑÑ Ð¸, как ÑледÑÑвие, ÑжимаÑÑ Ð¸ анализиÑоваÑÑ Ð²ÑеменнÑе ÑаблиÑÑ. Ðо ÑÑой пÑиÑине ÑооÑвеÑÑÑвÑÑÑие опеÑаÑии оÑиÑÑки и анализа ÑледÑÐµÑ Ð²ÑполнÑÑÑ, вÑзÑÐ²Ð°Ñ SQL-ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑÐ°Ð¼ÐºÐ°Ñ ÑеанÑа. ÐапÑимеÑ, еÑли вÑеменнÑÑ ÑаблиÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð² ÑложнÑÑ Ð·Ð°Ð¿ÑоÑÐ°Ñ , бÑÐ´ÐµÑ ÑазÑмнÑм вÑполниÑÑ Ð´Ð»Ñ Ð½ÐµÑ
ANALYZEпоÑле Ñого, как она бÑÐ´ÐµÑ Ð½Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð°.Ðо Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ добавиÑÑ Ñказание
GLOBALилиLOCALпеÑедTEMPORARYилиTEMP. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Postgres Pro и ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑей возможноÑÑÑÑ; Ñм. СовмеÑÑимоÑÑÑ.UNLOGGEDС ÑÑим Ñказанием ÑаблиÑа ÑоздаÑÑÑÑ ÐºÐ°Ðº нежÑÑналиÑÑемаÑ. ÐаннÑе, запиÑÑваемÑе в нежÑÑналиÑÑемÑе ÑаблиÑÑ, не пÑÐ¾Ñ Ð¾Ð´ÑÑ ÑеÑез жÑÑнал пÑедзапиÑи (Ñм. ÐлавÑ 29), в ÑезÑлÑÑаÑе Ñего Ñакие ÑаблиÑÑ ÑабоÑаÑÑ Ð³Ð¾Ñаздо бÑÑÑÑее обÑÑнÑÑ . Ðднако, они не заÑиÑÐµÐ½Ñ Ð¾Ñ ÑбоÑ; пÑи Ñбое или аваÑийном оÑклÑÑении ÑеÑвеÑа нежÑÑналиÑÑÐµÐ¼Ð°Ñ ÑаблиÑа авÑомаÑиÑеÑки ÑÑекаеÑÑÑ. ÐÑоме Ñого, ÑодеÑжимое нежÑÑналиÑÑемой ÑаблиÑÑ Ð½Ðµ ÑеплиÑиÑÑеÑÑÑ Ð½Ð° ведомÑе ÑеÑвеÑÑ. ÐÑбÑе индекÑÑ, ÑоздаваемÑе Ð´Ð»Ñ Ð½ÐµÐ¶ÑÑналиÑÑемой ÑаблиÑÑ, авÑомаÑиÑеÑки ÑÑановÑÑÑÑ Ð½ÐµÐ¶ÑÑналиÑÑемÑми.
IF NOT EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли оÑноÑение Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание. ÐамеÑÑÑе, ÑÑо Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо ÑÑÑеÑÑвÑÑÑее оÑноÑение как-Ñо ÑооÑноÑиÑÑÑ Ñ Ñем, коÑоÑое могло Ð±Ñ Ð±ÑÑÑ Ñоздано.
имÑ_ÑаблиÑÑÐÐ¼Ñ Ñоздаваемой ÑаблиÑÑ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
OFимÑ_ÑипаСоздаÑÑ ÑипизиÑованнÑÑ ÑаблиÑÑ, ÑÑÑÑкÑÑÑа коÑоÑой опÑеделÑеÑÑÑ ÑказаннÑм ÑоÑÑавнÑм Ñипом (его Ð¸Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ ÑÑ ÐµÐ¼Ð¾Ð¹). ТипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа пÑивÑзана к поÑодивÑÐµÐ¼Ñ ÐµÑ ÑипÑ; напÑимеÑ, пÑи Ñдалении Ñипа (командой
DROP TYPE ... CASCADE) бÑÐ´ÐµÑ Ñдалена и ÑÑа ÑаблиÑа.Ðогда ÑоздаÑÑÑÑ ÑипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ ÐµÑ ÑÑолбÑов опÑеделÑÑÑÑÑ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñим ÑоÑÑавнÑм Ñипом, а не задаÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
CREATE TABLE. ÐоCREATE TABLEÐ¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² ÑаблиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ огÑаниÑениÑ, а Ñакже задаÑÑ Ð¿Ð°ÑамеÑÑÑ ÐµÑ Ñ ÑанениÑ.имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа, Ñоздаваемого в новой ÑаблиÑе.
Ñип_даннÑÑТип даннÑÑ ÑÑолбÑа (Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¾Ð¿Ñеделение маÑÑива Ñ ÑÑим Ñипом). Ðа дополниÑелÑнÑми ÑведениÑми о ÑÐ¸Ð¿Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑе поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Postgres Pro, обÑаÑиÑеÑÑ Ðº Ðлаве 8.
COLLATEпÑавило_ÑоÑÑиÑовкиÐÑедложение
COLLATEназнаÑÐ°ÐµÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ ÑÑолбÑа (коÑоÑÑй должен имеÑÑ Ñип, поддеÑживаÑÑий ÑоÑÑиÑовкÑ). ÐÑли оно оÑÑÑÑÑÑвÑеÑ, иÑполÑзÑеÑÑÑ Ð¿Ñавило ÑоÑÑиÑовки по ÑмолÑаниÑ, ÑÑÑановленное Ð´Ð»Ñ Ñипа даннÑÑ ÑÑолбÑа.INHERITS (ÑаблиÑа_ÑодиÑелÑ[, ... ] )ÐеобÑзаÑелÑное пÑедложение
INHERITSопÑеделÑÐµÑ ÑпиÑок ÑаблиÑ, Ð¾Ñ ÐºÐ¾ÑоÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки наÑледоваÑÑ Ð²Ñе ÑÑолбÑÑ. РодиÑелÑÑкие ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¾Ð±ÑÑнÑми или ÑÑоÑонними ÑаблиÑами.ÐÑи иÑполÑзовании
INHERITSÑоздаÑÑÑÑ Ð¿Ð¾ÑÑоÑÐ½Ð½Ð°Ñ ÑвÑÐ·Ñ Ð´Ð¾ÑеÑней ÑаблиÑÑ Ñ ÑодиÑелÑÑкими. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð² ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ Ð¾Ð±ÑÑно Ñакже оÑÑажаÑÑÑÑ Ð² доÑеÑÐ½Ð¸Ñ , и по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñи ÑÑении ÑодиÑелÑÑÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² ÑезÑлÑÑÐ°Ñ Ð²ÐºÐ»ÑÑаÑÑÑÑ Ð´Ð°Ð½Ð½Ñе доÑеÑней ÑаблиÑÑ.Ðогда в неÑколÑÐºÐ¸Ñ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ Ð¾ÐºÐ°Ð·ÑваÑÑÑÑ ÑÑолбÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ именем, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка, за иÑклÑÑением ÑлÑÑаÑ, когда ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²ÑÐµÑ ÑÑÐ¸Ñ ÑÑолбÑов в ÑаблиÑÐ°Ñ ÑовпадаÑÑ. Ð ÑÑом ÑлÑÑае одноимÑннÑе ÑÑолбÑÑ Ð¾Ð±ÑединÑÑÑÑÑ Ð¸ ÑоÑмиÑÑÑÑ Ð¾Ð´Ð¸Ð½ ÑÑÐ¾Ð»Ð±ÐµÑ Ð² новой ÑаблиÑе. ÐÑли Ð¸Ð¼Ñ ÑÑолбÑа новой ÑаблиÑÑ ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ одного из ÑнаÑледованнÑÑ ÑÑолбÑов, Ð¸Ñ ÑÐ¸Ð¿Ñ Ñак же Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ, и в ÑÑом ÑлÑÑае опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑов Ñоже ÑливаÑÑÑÑ Ð² однÑ. ÐÑли в новой ÑаблиÑе Ñвно ÑказÑваеÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑолбÑа, ÑÑо знаÑение пеÑеопÑеделÑÐµÑ Ð»ÑбÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, ÑнаÑледованнÑе ÑÑим ÑÑолбÑом. РпÑоÑивном ÑлÑÑае, еÑли знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð² ÑазнÑÑ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ , ÑÑи опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ, инаÑе пÑоизойдÑÑ Ð¾Ñибка.
ÐгÑаниÑениÑ
CHECKобÑединÑÑÑÑÑ Ð²Ð¼ÐµÑÑе по ÑÑÑи Ñак же, как и ÑÑолбÑÑ: еÑли неÑколÑко ÑодиÑелÑÑÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸/или опÑеделение новой ÑаблиÑÑ ÑодеÑÐ¶Ð°Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑе огÑаниÑениÑCHECK, ÑÑим огÑаниÑениÑм Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑовеÑки, в пÑоÑивном ÑлÑÑае пÑоизойдÑÑ Ð¾Ñибка. Ð ÑлÑÑае ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð²ÑÑажениÑ, ÑÑи огÑаниÑÐµÐ½Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ñм вÑÑажением обÑединÑÑÑÑÑ Ð² одно. ÐÑи ÑÑом огÑаниÑÐµÐ½Ð¸Ñ Ñо ÑвойÑÑвомNO INHERITв ÑодиÑелÑÑкой ÑаблиÑе иÑклÑÑаÑÑÑÑ Ð¸Ð· ÑаÑÑмоÑÑениÑ. ÐамеÑÑÑе, ÑÑо безÑмÑнное огÑаниÑениеCHECKв новой ÑаблиÑе никогда не ÑливаеÑÑÑ Ñ Ð´ÑÑгими, Ñак как Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ вÑегда вÑбиÑаеÑÑÑ ÑникалÑное имÑ.ÐаÑамеÑÑÑ
STORAGEÐ´Ð»Ñ ÑÑолбÑа Ñак же копиÑÑÑÑÑÑ Ð¸Ð· ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑ.LIKEиÑÑ Ð¾Ð´Ð½Ð°Ñ_ÑаблиÑа[ваÑианÑ_копиÑованиÑ... ]ÐÑедложение
LIKEопÑеделÑÐµÑ ÑаблиÑÑ, из коÑоÑой в новÑÑ ÑаблиÑÑ Ð±ÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð²Ñе имена ÑÑолбÑов, Ð¸Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° NULL.РоÑлиÑие оÑ
INHERITS, Ð½Ð¾Ð²Ð°Ñ Ð¸ иÑÑ Ð¾Ð´Ð½Ð°Ñ ÑаблиÑа ÑÑановÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑми поÑле завеÑÑÐµÐ½Ð¸Ñ ÑозданиÑ. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе не оÑÑажаÑÑÑÑ Ð² новой, а даннÑе новой ÑаблиÑÑ Ð½Ðµ вклÑÑаÑÑÑÑ Ð² ÑезÑлÑÑÐ°Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹.ÐÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений по ÑмолÑÐ°Ð½Ð¸Ñ Ð² опÑеделениÑÑ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов пеÑеноÑÑÑÑÑ Ð² новÑÑ ÑаблиÑÑ, ÑолÑко еÑли дополниÑелÑно Ñказано
INCLUDING DEFAULTS. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего в новой ÑаблиÑе ÑкопиÑованнÑе ÑÑолбÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ NULL. ÐамеÑÑÑе, ÑÑо пÑи копиÑовании вÑÑажений по ÑмолÑаниÑ, коÑоÑÑе вÑзÑваÑÑ ÑÑнкÑии, модиÑиÑиÑÑÑÑие ÐÐ, как напÑимеÑnextval, Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑазовÑваÑÑÑÑ ÑÑнкÑионалÑÐ½Ð°Ñ ÑвÑÐ·Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ñ Ð½Ð¾Ð²Ð¾Ð¹.ÐгÑаниÑÐµÐ½Ð¸Ñ NULL копиÑÑÑÑÑÑ Ð² новÑÑ ÑаблиÑÑ Ð²Ñегда, а огÑаниÑениÑ
CHECKкопиÑÑÑÑÑÑ ÑолÑко пÑи Ñвном ÑказанииINCLUDING CONSTRAINTS. ÐÑо в Ñавной меÑе каÑаеÑÑÑ Ð¾Ð³ÑаниÑений как ÑаблиÑ, Ñак и ÑÑолбÑов.ÐндекÑÑ, ÑвойÑÑво
PRIMARY KEY, а Ñакже огÑаниÑениÑUNIQUEиEXCLUDEкопиÑÑÑÑÑÑ Ð¸Ð· иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð² новÑÑ, ÑолÑко еÑли Ñвно ÑказаноINCLUDING INDEXES. Ðмена Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ Ð¸Ð½Ð´ÐµÐºÑов и огÑаниÑений вÑбиÑаÑÑÑÑ ÑоглаÑно ÑÑандаÑÑнÑм пÑавилам, незавиÑимо Ð¾Ñ Ñого, как назÑвалиÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñе. (ÐÑо позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¾Ñибок Ñ Ð´ÑблиÑованием имÑн Ñ Ð½Ð¾Ð²Ñми индекÑами.)ÐаÑамеÑÑÑ
STORAGEбÑдÑÑ Ð¿ÐµÑенеÑÐµÐ½Ñ Ð² опÑеделение копиÑÑемÑÑ ÑÑолбÑов, ÑолÑко еÑли Ñвно ÑказÑваеÑÑÑINCLUDING STORAGE. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑÑSTORAGEиÑклÑÑаÑÑÑÑ, вÑледÑÑвие Ñего ÑкопиÑованнÑе ÑÑолбÑÑ Ð² новой ÑаблиÑе полÑÑаÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ, опÑеделÑннÑе ÑооÑвеÑÑÑвÑÑÑим Ñипом. ÐодÑобнее паÑамеÑÑÑSTORAGEопиÑÐ°Ð½Ñ Ð² Разделе 63.2.ÐомменÑаÑии Ð´Ð»Ñ ÑкопиÑованнÑÑ ÑÑолбÑов, огÑаниÑений и индекÑов бÑдÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ, ÑолÑко еÑли Ñвно Ñказано
INCLUDING COMMENTS. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии иÑклÑÑаÑÑÑÑ, вÑледÑÑвие Ñего ÑкопиÑованнÑе ÑÑолбÑÑ Ð¸ огÑаниÑÐµÐ½Ð¸Ñ Ð² новой ÑаблиÑе оказÑваÑÑÑÑ Ð±ÐµÐ· комменÑаÑиев.ÐÑедложение
INCLUDING ALLÑвлÑеÑÑÑ ÑокÑаÑÑнной ÑоÑмой ÑазвÑÑнÑÑого пÑедложениÑINCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS.ÐамеÑÑÑе, ÑÑо в оÑлиÑие оÑ
INHERITS, ÑÑолбÑÑ Ð¸ огÑаниÑениÑ, копиÑÑемÑе командойLIKE, не обÑединÑÑÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑми ÑÑолбÑами и огÑаниÑениÑми. ÐÑли дÑблиÑÑÑÑееÑÑ Ð¸Ð¼Ñ ÑказÑваеÑÑÑ Ñвно или Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð² дÑÑгом пÑедложенииLIKE, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка.ÐÑедложение
LIKEÐ¼Ð¾Ð¶ÐµÑ Ñакже пÑименÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñеделений ÑÑолбÑов из пÑедÑÑавлений, ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ ÑоÑÑавнÑÑ Ñипов. ÐепÑименимÑе паÑамеÑÑÑ (напÑимеÑ,INCLUDING INDEXESÐ´Ð»Ñ Ð¿ÑедÑÑавлениÑ) пÑи ÑÑом игноÑиÑÑÑÑÑÑ.CONSTRAINTимÑ_огÑаниÑениÑÐеобÑзаÑелÑное Ð¸Ð¼Ñ ÑÑолбÑа или огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑи наÑÑÑении огÑаниÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ Ð¸Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ Ð² ÑообÑении об оÑÐ¸Ð±ÐºÐ°Ñ , Ñак ÑÑо имена огÑаниÑений вида
ÑÑÐ¾Ð»Ð±ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑммогÑÑ ÑообÑиÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½ÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± огÑаниÑении клиенÑÑÐºÐ¾Ð¼Ñ Ð¿ÑиложениÑ. (Ðмена огÑаниÑений, вклÑÑаÑÑие пÑобелÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заклÑÑаÑÑ Ð² двойнÑе кавÑÑки.) ÐÑли Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ðµ Ñказано, ÑиÑÑема генеÑиÑÑÐµÑ Ð¸Ð¼Ñ Ð°Ð²ÑомаÑиÑеÑки.NOT NULLÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL.
NULLÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL (по ÑмолÑаниÑ).
ÐÑо пÑедложение пÑедназнаÑено ÑолÑко Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð½ÐµÑÑандаÑÑнÑми базами даннÑÑ SQL. ÐÑполÑзоваÑÑ ÐµÐ³Ð¾ в новÑÑ Ð¿ÑиложениÑÑ Ð½Ðµ ÑекомендÑеÑÑÑ.
CHECK (вÑÑажение) [ NO INHERIT ]РогÑаниÑении
CHECKзадаÑÑÑÑ Ð²ÑÑажение, возвÑаÑаÑÑее бÑлевÑкий ÑезÑлÑÑаÑ, по коÑоÑÐ¾Ð¼Ñ Ð¾Ð¿ÑеделÑеÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑпеÑна опеÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ ÑÑÑок. ÐпеÑаÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑÑпеÑно, еÑли ÑезÑлÑÑÐ°Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñавен TRUE или UNKNOWN. ÐÑли же Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð¹-нибÑÐ´Ñ ÑÑÑоки, задейÑÑвованной в опеÑаÑии Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ изменениÑ, бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен ÑезÑлÑÑÐ°Ñ FALSE, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка, и ÑÑа опеÑаÑÐ¸Ñ Ð½Ðµ менÑÐµÑ Ð½Ð¸Ñего в базе даннÑÑ . ÐгÑаниÑение-пÑовеÑка, заданное как огÑаниÑение ÑÑолбÑа, должно ÑÑÑлаÑÑÑÑ ÑолÑко на знаÑение Ñамого ÑÑолбÑа, Ñогда как огÑаниÑение на ÑÑовне ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ Ð¸ на неÑколÑко ÑÑолбÑов.РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÑÑажениÑ
CHECKне могÑÑ ÑодеÑжаÑÑ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑÑ Ð¸Ð»Ð¸ ÑÑÑлаÑÑÑÑ Ð½Ð° пеÑеменнÑе, кÑоме как на ÑÑолбÑÑ ÑекÑÑей ÑÑÑоки. Также допÑÑÑима ÑÑÑлка на ÑиÑÑемнÑй ÑÑолбеÑtableoid, но не на дÑÑгие ÑиÑÑемнÑе ÑÑолбÑÑ.ÐгÑаниÑение Ñ Ð¿Ð¾Ð¼ÐµÑкой
NO INHERITне бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð´Ð¾ÑеÑними ÑаблиÑами.Ðогда Ð´Ð»Ñ ÑаблиÑÑ Ð·Ð°Ð´Ð°Ð½Ð¾ неÑколÑко огÑаниÑений
CHECK, они бÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки в алÑавиÑном поÑÑдке имÑн поÑле пÑовеÑки огÑаниÑенийNOT NULL. (Ðо веÑÑии 9.5 в PostgreSQL не бÑло ÑÑÑановлено никакого опÑеделÑнного поÑÑдка обÑабоÑки огÑаниÑенийCHECK.)DEFAULTвÑÑажение_по_ÑмолÑаниÑÐÑедложение
DEFAULTзадаÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа, в опÑеделении коÑоÑого оно пÑиÑÑÑÑÑвÑеÑ. ÐнаÑение задаÑÑÑÑ Ð²ÑÑажением без пеÑеменнÑÑ (подзапÑоÑÑ Ð¸ пеÑекÑÑÑÑнÑе ÑÑÑлки на дÑÑгие ÑÑолбÑÑ ÑекÑÑей ÑаблиÑÑ Ð² нÑм не допÑÑкаÑÑÑÑ). Тип даннÑÑ Ð²ÑÑажениÑ, задаÑÑего знаÑение по ÑмолÑаниÑ, должен ÑооÑвеÑÑÑвоваÑÑ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑолбÑа.ÐÑо вÑÑажение бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð²Ð¾ вÑÐµÑ Ð¾Ð¿ÐµÑаÑиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , в коÑоÑÑÑ Ð½Ðµ задаÑÑÑÑ Ð·Ð½Ð°Ñение данного ÑÑолбÑа. ÐÑли знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ опÑеделено, Ñаким знаÑением бÑÐ´ÐµÑ NULL.
UNIQUE(огÑаниÑение ÑÑолбÑа)UNIQUE ((огÑаниÑение ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ... ] ) [INCLUDING (имÑ_ÑÑолбÑа[, ...])]ÐгÑаниÑение
UNIQUEопÑеделÑеÑ, ÑÑо гÑÑппа из одного или неÑколÑÐºÐ¸Ñ ÑÑолбÑов ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑолÑко ÑникалÑнÑе знаÑениÑ. ÐгÑаниÑение ÑникалÑноÑÑи Ð´Ð»Ñ ÑаблиÑÑ Ð²ÐµÐ´ÑÑ ÑÐµÐ±Ñ ÑоÑно Ñак же, как огÑаниÑение Ð´Ð»Ñ ÑÑолбÑа, но Ð¼Ð¾Ð¶ÐµÑ Ð¾Ñ Ð²Ð°ÑÑваÑÑ Ð½ÐµÑколÑко ÑÑолбÑов.ÐÑи пÑовеÑке огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи знаÑÐµÐ½Ð¸Ñ NULL не ÑÑиÑаÑÑÑÑ ÑавнÑми.
Ркаждом огÑаниÑении ÑникалÑноÑÑи Ð´Ð»Ñ ÑаблиÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ задаваÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, оÑлиÑнÑй Ð¾Ñ Ð½Ð°Ð±Ð¾Ñа лÑбого дÑÑгого огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи или пеÑвиÑного клÑÑа в данной ÑаблиÑе. (ÐнаÑе ÑÑо бÑÐ´ÐµÑ Ð¾Ð´Ð½Ð¾ и Ñо же огÑаниÑение, опÑеделÑнное многокÑаÑно.)
ÐÑи добавлении огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки Ñоздан ÑникалÑнÑй индекÑ-B-деÑево Ð´Ð»Ñ ÑÑолбÑа или гÑÑÐ¿Ð¿Ñ ÑÑолбÑов, пеÑеÑиÑленнÑÑ Ð² огÑаниÑении. ÐеобÑзаÑелÑное пÑедложение
INCLUDINGпозволÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑникалÑноÑÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑÑебоваÑÑÑÑ. ÐамеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ Ð¾Ð³ÑаниÑение по ÑÑолбÑам не конÑÑолиÑÑеÑÑÑ, оно вÑÑ Ð¶Ðµ завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ñ . Ðак ÑледÑÑвие, некоÑоÑÑе опеÑаÑии Ñ ÑÑими ÑÑолбÑами (напÑимеÑ,DROP COLUMN) могÑÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ ÐºÐ°Ñкадное Ñдаление огÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. Ðолее подÑобно об ÑÑом ÑаÑÑказÑваеÑÑÑ Ð² абзаÑе обINCLUDINGв опиÑании CREATE INDEX.PRIMARY KEY(огÑаниÑение ÑÑолбÑа)PRIMARY KEY ((огÑаниÑение_ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ... ] ) [INCLUDING (имÑ_ÑÑолбÑа[, ...])]ÐгÑаниÑение
PRIMARY KEYопÑеделÑеÑ, ÑÑо ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð»Ð¸ ÑÑолбÑÑ ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ ÑолÑко ÑникалÑнÑе (без повÑоÑений) знаÑениÑ, оÑлиÑнÑе Ð¾Ñ NULL. ÐÐ»Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½ ÑолÑко один пеÑвиÑнÑй клÑÑ, бÑÐ´Ñ Ñо огÑаниÑение ÑÑолбÑа или огÑаниÑение ÑаблиÑÑ.РопÑеделении пеÑвиÑного клÑÑа должен задаваÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, оÑлиÑнÑй Ð¾Ñ Ð½Ð°Ð±Ð¾Ñа лÑбого дÑÑгого огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи, ÑÑÑановленного Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ. (РпÑоÑивном ÑлÑÑае ÑникалÑное огÑаниÑение оказÑваеÑÑÑ Ð¸Ð·Ð±ÑÑоÑнÑм и бÑÐ´ÐµÑ Ð¾ÑбÑоÑено.)
PRIMARY KEYÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Ñе же огÑаниÑениÑ, ÑÑо и ÑоÑеÑаниеUNIQUEиNOT NULL, но обÑазование пеÑвиÑного клÑÑа из набоÑа ÑÑолбÑов Ñакже добавлÑÐµÑ Ð¼ÐµÑаданнÑе о конÑÑÑÑкÑии ÑÑ ÐµÐ¼Ñ, Ñак как пеÑвиÑнÑй клÑÑ Ð¿Ð¾Ð´ÑазÑмеваеÑ, ÑÑо дÑÑгие ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑÐ¾Ñ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, как на ÑникалÑнÑй иденÑиÑикаÑÐ¾Ñ ÑÑÑок.ÐÑи добавлении огÑаниÑениÑ
PRIMARY KEYбÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки Ñоздан ÑникалÑнÑй индекÑ-B-деÑево Ð´Ð»Ñ ÑÑолбÑа или гÑÑÐ¿Ð¿Ñ ÑÑолбÑов, пеÑеÑиÑленнÑÑ Ð² огÑаниÑении. ÐеобÑзаÑелÑное пÑедложениеINCLUDINGпозволÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð¾Ð³ÑаниÑение не бÑÐ´ÐµÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑÑÑ. ÐамеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ Ð¾Ð³ÑаниÑение по ÑÑолбÑам не конÑÑолиÑÑеÑÑÑ, оно вÑÑ Ð¶Ðµ завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ñ . Ðак ÑледÑÑвие, некоÑоÑÑе опеÑаÑии Ñ ÑÑими ÑÑолбÑами (напÑимеÑ,DROP COLUMN) могÑÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ ÐºÐ°Ñкадное Ñдаление огÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. Ðолее подÑобно об ÑÑом ÑаÑÑказÑваеÑÑÑ Ð² абзаÑе обINCLUDINGв опиÑании CREATE INDEX.EXCLUDE [ USINGиндекÑнÑй_меÑод] (ÑлеменÑ_иÑклÑÑениÑWITHопеÑаÑоÑ[, ... ] )паÑамеÑÑÑ_индекÑа[ WHERE (пÑедикаÑ) ]ÐÑедложение
EXCLUDEопÑеделÑÐµÑ Ð¾Ð³ÑаниÑение-иÑклÑÑение, коÑоÑое гаÑанÑиÑÑеÑ, ÑÑо Ð´Ð»Ñ Ð»ÑбÑÑ Ð´Ð²ÑÑ ÑÑÑок, ÑÑавниваемÑÑ Ð¿Ð¾ ÑказаннÑм ÑÑолбÑам или вÑÑажениÑм Ñ ÑказаннÑми опеÑаÑоÑами, ÑезÑлÑÑÐ°Ñ Ð½Ðµ бÑÐ´ÐµÑ ÑавенTRUEÐ´Ð»Ñ Ð²ÑÐµÑ ÑÑавнений. ÐÑли вÑе ÑказаннÑе опеÑаÑоÑÑ Ð¿ÑовеÑÑÑÑ ÑавенÑÑво, ÑÑо огÑаниÑение ÑавноÑилÑно огÑаниÑениÑUNIQUE, Ñ Ð¾ÑÑ Ð¾Ð±ÑÑное огÑаниÑение ÑникалÑноÑÑи бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð±ÑÑÑÑее. С дÑÑгой ÑÑоÑонÑ, в огÑаниÑениÑÑ -иÑклÑÑениÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаваÑÑ Ð±Ð¾Ð»ÐµÐµ обÑие ÑÑловиÑ, Ñем пÑоÑÑое ÑÑловие на ÑавенÑÑво. ÐапÑимеÑ, можно задаÑÑ Ð¾Ð³ÑаниÑение, ÑÑебÑÑÑее, ÑÑÐ¾Ð±Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ две ÑÑÑоки в ÑаблиÑе не ÑодеÑжали пеÑеÑекаÑÑÐ¸Ñ ÑÑ ÐºÑÑгов (Ñм. Раздел 8.8), пÑименив опеÑаÑоÑ&&.ÐгÑаниÑениÑ-иÑклÑÑÐµÐ½Ð¸Ñ ÑеализÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð½Ð´ÐµÐºÑов, Ñак ÑÑо каждÑй ÑказаннÑй в Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑвÑзан Ñ ÑооÑвеÑÑÑвÑÑÑим клаÑÑом опеÑаÑоÑов (Ñм. Раздел 11.9) длÑ
индекÑного_меÑода. ÐÑоме Ñого, опеÑаÑоÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÐºÐ¾Ð¼Ð¼ÑÑаÑивнÑми. РкаждомÑлеменÑе_иÑклÑÑениÑможно дополниÑелÑно ÑказаÑÑ ÐºÐ»Ð°ÑÑ Ð¾Ð¿ÐµÑаÑоÑа и/или паÑамеÑÑÑ ÑоÑÑиÑовки, подÑобно опиÑаннÑе в CREATE INDEX.ÐндекÑнÑй меÑод доÑÑÑпа должен поддеÑживаÑÑ
amgettuple(Ñм. ÐлавÑ 58); в наÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо ознаÑаеÑ, ÑÑо индекÑÑ GIN Ð´Ð»Ñ ÑÑого не Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ. ХоÑÑ Ð² огÑаниÑении-иÑклÑÑении можно иÑполÑзоваÑÑ B-деÑевÑÑ Ð¸ Ñ ÐµÑ-индекÑÑ, в ÑÑом мало ÑмÑÑла, Ñак как Ñакой Ð¿Ð¾Ð´Ñ Ð¾Ð´ ниÑем не лÑÑÑе обÑÑного огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи. Так ÑÑо на пÑакÑике меÑодом доÑÑÑпа вÑегда бÑÐ´ÐµÑ GiST или SP-GiST.ÐаÑамеÑÑ
пÑедикаÑпозволÑÐµÑ ÑказаÑÑ Ð¾Ð³ÑаниÑение-иÑклÑÑение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑва ÑаблиÑÑ; внÑÑÑи пÑи ÑÑом ÑоздаÑÑÑÑ ÑаÑÑиÑнÑй индекÑ. ÐамеÑÑÑе, ÑÑо пÑÐµÐ´Ð¸ÐºÐ°Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заклÑÑиÑÑ Ð² Ñкобки.REFERENCES(огÑаниÑение ÑÑолбÑа)внеÑнÑÑ_ÑаблиÑа[ (внеÑний_ÑÑолбеÑ) ] [ MATCHÑип_ÑовпадениÑ] [ ON DELETEдейÑÑвие] [ ON UPDATEдейÑÑвие]FOREIGN KEY ((огÑаниÑение ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ... ] ) REFERENCESвнеÑнÑÑ_ÑаблиÑа[ (внеÑний_ÑÑолбеÑ[, ... ] ) ] [ MATCHÑип_ÑовпадениÑ] [ ON DELETEдейÑÑвие] [ ON UPDATEдейÑÑвие]ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ Ð¾Ð³ÑаниÑение внеÑнего клÑÑа, ÑÑебÑÑÑее, ÑÑÐ¾Ð±Ñ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð³ÑÑппа из одного или неÑколÑÐºÐ¸Ñ ÑÑолбÑов новой ÑаблиÑÑ ÑодеÑжала ÑолÑко Ñакие знаÑениÑ, коÑоÑÑм ÑооÑвеÑÑÑвÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² заданнÑÑ Ð²Ð½ÐµÑÐ½Ð¸Ñ ÑÑолбÑÐ°Ñ Ð½ÐµÐºÐ¾ÑоÑой ÑÑÑоки во внеÑней ÑаблиÑе. ÐÑли ÑпиÑок
внеÑÐ½Ð¸Ñ _ÑÑолбÑовопÑÑен, в каÑеÑÑве него иÑполÑзÑеÑÑÑ Ð¿ÐµÑвиÑнÑй клÑÑвнеÑней_ÑаблиÑÑ. РкаÑеÑÑве внеÑÐ½Ð¸Ñ ÑÑолбÑов Ð´Ð¾Ð»Ð¶Ð½Ñ ÑказÑваÑÑÑÑ ÑÑолбÑÑ Ð½ÐµÐ¾ÑкладÑваемого ÑникалÑного огÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ огÑаниÑение пеÑвиÑного клÑÑа во внеÑней ÑаблиÑе. ÐамеÑÑÑе, ÑÑо огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа, ÑвÑзÑваÑÑие вÑеменнÑе и поÑÑоÑннÑе ÑаблиÑÑ, опÑеделиÑÑ Ð½ÐµÐ»ÑзÑ.ÐнаÑениÑ, вÑÑавлÑемÑе в ÑÑÑлаÑÑиеÑÑ ÑÑолбÑÑ, ÑвеÑÑÑÑÑÑ Ñо знаÑениÑми во внеÑÐ½Ð¸Ñ ÑÑолбÑÐ°Ñ Ð²Ð½ÐµÑней ÑаблиÑÑ Ñ ÑÑÑÑом заданного Ñипа ÑовпадениÑ. ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑÑи Ñипа ÑовпадениÑ:
MATCH FULL(полное Ñовпадение),MATCH PARTIAL(ÑаÑÑиÑное Ñовпадение) и Ñип по ÑмолÑаниÑ,MATCH SIMPLE(пÑоÑÑое Ñовпадение). СMATCH FULLни один из ÑÑолбÑов ÑоÑÑавного внеÑнего клÑÑа не Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ NULL, кÑоме ÑлÑÑаÑ, когда вÑе внеÑние ÑÑолбÑÑ NULL; в ÑÑом ÑлÑÑае ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ имеÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ Ð²Ð¾ внеÑней ÑаблиÑе. СMATCH SIMPLEлÑбой из ÑÑолбÑов внеÑнего клÑÑа Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ NULL; пÑи ÑÑом ÑÑÑока Ñ NULL в одном из ÑÐ°ÐºÐ¸Ñ ÑÑолбÑов Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ имеÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ Ð²Ð¾ внеÑней ÑаблиÑе. ТипMATCH PARTIALеÑÑ Ð½Ðµ Ñеализован. (РазÑмееÑÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¾Ð¿ÑоÑÑ Ñо ÑÑавнением NULL не возникали, к ÑÑолбÑам, ÑÑÑлаÑÑимÑÑ Ð½Ð° внеÑние, можно пÑимениÑÑ Ð¾Ð³ÑаниÑениÑNOT NULL.)ÐÑоме Ñого, пÑи изменении знаÑений во внеÑÐ½Ð¸Ñ ÑÑолбÑÐ°Ñ Ñ Ð´Ð°Ð½Ð½Ñми в ÑÑолбÑÐ°Ñ ÑÑой ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿ÑоизводиÑÑÑÑ Ð¾Ð¿ÑеделÑннÑе дейÑÑвиÑ. ÐÑедложение
ON DELETEзадаÑÑ Ð´ÐµÐ¹ÑÑвие, пÑоизводимое пÑи Ñдалении некоÑоÑой ÑÑÑоки во внеÑней ÑаблиÑе. ÐÑедложениеON UPDATEподобнÑм обÑазом задаÑÑ Ð´ÐµÐ¹ÑÑвие, пÑоизводимое пÑи изменении знаÑÐµÐ½Ð¸Ñ Ð² ÑелевÑÑ ÑÑолбÑÐ°Ñ Ð²Ð½ÐµÑней ÑаблиÑÑ. ÐÑли ÑÑÑока изменена, но ÑÑо изменение не заÑÑонÑло ÑелевÑе ÑÑолбÑÑ, никакое дейÑÑвие не пÑоизводиÑÑÑ. СÑÑлоÑнÑе дейÑÑвиÑ, кÑомеNO ACTION, нелÑÐ·Ñ ÑделаÑÑ Ð¾ÑкладÑваемÑми, даже еÑли огÑаниÑение обÑÑвлено как оÑкладÑваемое. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñе ÑледÑÑÑие ваÑианÑÑ Ð´ÐµÐ¹ÑÑвий:NO ACTIONÐÑдаÑÑ Ð¾ÑибкÑ, показÑваÑÑÑÑ, ÑÑо пÑи Ñдалении или изменении запиÑи пÑоизойдÑÑ Ð½Ð°ÑÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа. ÐÐ»Ñ Ð¾ÑложеннÑÑ Ð¾Ð³ÑаниÑений оÑибка пÑоизойдÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿ÑовеÑки огÑаниÑениÑ, еÑли ÑÑÑоки, ÑÑÑлаÑÑиеÑÑ Ð½Ð° ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ, по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð±ÑдÑÑ ÑÑÑеÑÑвоваÑÑ. ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ.
RESTRICTÐÑдаÑÑ Ð¾ÑибкÑ, показÑваÑÑÑÑ, ÑÑо пÑи Ñдалении или изменении запиÑи пÑоизойдÑÑ Ð½Ð°ÑÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа. ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¿Ð¾Ð´Ð¾Ð±ÐµÐ½
NO ACTION, но ÑÑа пÑовеÑка бÑÐ´ÐµÑ Ð½ÐµÐ¾ÑкладÑваемой.CASCADEУдалиÑÑ Ð²Ñе ÑÑÑоки, ÑÑÑлаÑÑиеÑÑ Ð½Ð° ÑдалÑемÑÑ Ð·Ð°Ð¿Ð¸ÑÑ, либо поменÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² ÑÑÑлаÑÑÐ¸Ñ ÑÑ ÑÑолбÑÐ°Ñ Ð½Ð° новÑе знаÑÐµÐ½Ð¸Ñ Ð²Ð¾ внеÑÐ½Ð¸Ñ ÑÑолбÑÐ°Ñ , в ÑооÑвеÑÑÑвии Ñ Ð¾Ð¿ÐµÑаÑией.
SET NULLУÑÑановиÑÑ ÑÑÑлаÑÑиеÑÑ ÑÑолбÑÑ ÑавнÑми NULL.
SET DEFAULTУÑÑановиÑÑ Ð² ÑÑÑлаÑÑÐ¸Ñ ÑÑ ÑÑолбÑÐ°Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. (ÐÑли ÑÑи знаÑÐµÐ½Ð¸Ñ Ð½Ðµ ÑÐ°Ð²Ð½Ñ NULL, во внеÑней ÑаблиÑе должна бÑÑÑ ÑÑÑока, ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð½Ð°Ð±Ð¾ÑÑ Ð·Ð½Ð°Ñений по ÑмолÑаниÑ; в пÑоÑивном ÑлÑÑае опеÑаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ð¾Ñибкой.)
ÐÑли внеÑние ÑÑолбÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ ÑаÑÑо, бÑÐ´ÐµÑ ÑазÑмнÑм добавиÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ ÑÑÑлаÑÑÐ¸Ñ ÑÑ ÑÑолбÑов, ÑÑÐ¾Ð±Ñ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿Ð¾ обеÑпеÑÐµÐ½Ð¸Ñ ÑÑÑлоÑной ÑелоÑÑноÑÑи, ÑвÑзаннÑе Ñ Ð¾Ð³ÑаниÑением внеÑнего клÑÑа, вÑполнÑлиÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивно.
DEFERRABLENOT DEFERRABLEÐÑо пÑедложение опÑеделÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ огÑаниÑение бÑÑÑ Ð¾ÑложеннÑм. ÐеоÑкладÑваемое огÑаниÑение бÑÐ´ÐµÑ Ð¿ÑовеÑÑÑÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ поÑле каждой командÑ. ÐÑовеÑка оÑкладÑваемÑÑ Ð¾Ð³ÑаниÑений Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñложена до завеÑÑÐµÐ½Ð¸Ñ ÑÑанзакÑии (обÑÑно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET CONSTRAINTS). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð²Ð°ÑианÑ
NOT DEFERRABLE. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо пÑедложение пÑинимаÑÑ ÑолÑко огÑаниÑениÑUNIQUE,PRIMARY KEY,EXCLUDEиREFERENCES(внеÑний клÑÑ). ÐгÑаниÑениÑNOT NULLиCHECKне могÑÑ Ð±ÑÑÑ Ð¾ÑложеннÑми. ÐамеÑÑÑе, ÑÑо оÑкладÑваемÑе огÑаниÑÐµÐ½Ð¸Ñ Ð½Ðµ могÑÑ Ð¿ÑименÑÑÑÑÑ Ð² каÑеÑÑве ÑеÑаÑÑÐ¸Ñ Ð¿Ñи конÑликÑе в опеÑаÑоÑеINSERTÑ Ð¿ÑедложениемON CONFLICT DO UPDATE.INITIALLY IMMEDIATEINITIALLY DEFERREDÐÐ»Ñ Ð¾ÑкладÑваемÑÑ Ð¾Ð³ÑаниÑений ÑÑо пÑедложение опÑеделÑеÑ, когда огÑаниÑение должно пÑовеÑÑÑÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐгÑаниÑение Ñ Ñ Ð°ÑакÑеÑиÑÑикой
INITIALLY IMMEDIATE(подÑазÑмеваемой по ÑмолÑаниÑ) пÑовеÑÑеÑÑÑ Ð¿Ð¾Ñле каждого опеÑаÑоÑа. ÐгÑаниÑениеINITIALLY DEFERRED, напÑоÑив, пÑовеÑÑеÑÑÑ ÑолÑко в конÑе ÑÑанзакÑии. ÐÑÐµÐ¼Ñ Ð¿ÑовеÑки огÑаниÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ Ñвно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET CONSTRAINTS.WITH (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] )ÐÑо пÑедложение опÑеделÑÐµÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑе паÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑа (за подÑобнÑми ÑведениÑми о Ð½Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº ÐаÑамеÑÑÑ Ñ ÑанениÑ). ÐÑедложение
WITHÐ´Ð»Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ñакже вклÑÑаÑÑ ÑказаниеOIDS=TRUE(или пÑоÑÑоOIDS), ÑÑÑанавливаÑÑее, ÑÑо ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑÑока ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ ÑобÑÑвеннÑй OID (Object IDentifier, иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа), или ÑказаниеOIDS=FALSE, ÑÑÑанавливаÑÑее, ÑÑо ÑÑÑоки не ÑодеÑÐ¶Ð°Ñ OID. ÐÑли ÑказаниеOIDSоÑÑÑÑÑÑвÑеÑ, знаÑение ÑÑого ÑвойÑÑва по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑÐ¸Ñ Ð¾Ñ ÐºÐ¾Ð½ÑигÑÑаÑионного паÑамеÑÑа default_with_oids. (ÐÑли Ð½Ð¾Ð²Ð°Ñ ÑаблиÑа ÑнаÑледована Ð¾Ñ ÐºÐ°ÐºÐ¸Ñ -либо ÑаблиÑ, имеÑÑÐ¸Ñ OID, ÑвойÑÑвоOIDS=TRUEзадаÑÑÑÑ Ð¿ÑинÑдиÑелÑно, даже еÑли в команде Ñвно напиÑаноOIDS=FALSE.)ÐÑли Ñвно Ñказано
OIDS=FALSEили ÑÑо подÑазÑмеваеÑÑÑ, в новой ÑаблиÑе не бÑдÑÑ Ñ ÑаниÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ OID и новÑй OID не бÑÐ´ÐµÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ добавлÑемой в Ð½ÐµÑ ÑÑÑоки. ÐÐ»Ñ Ð¾Ð±ÑÑнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ñакое поведение пÑедпоÑÑиÑелÑнее, Ñак как оно ÑокÑаÑÐ°ÐµÑ Ð¿Ð¾ÑÑебление OID и Ñем ÑамÑм оÑкладÑÐ²Ð°ÐµÑ Ð·Ð°Ñикливание 32-биÑного ÑÑÑÑÑика OID. Ðак ÑолÑко пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð·Ð°Ñикливание, знаÑÐµÐ½Ð¸Ñ OID болÑÑе нелÑÐ·Ñ ÑÑиÑаÑÑ ÑникалÑнÑми, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¸Ñ Ð·Ð½Ð°ÑиÑелÑно менее полезнÑми. Ð ÑÐ¾Ð¼Ñ Ð¶Ðµ, иÑклÑÑение ÑÑолбÑа OID из ÑаблиÑÑ ÑокÑаÑÐ°ÐµÑ Ð¾Ð±ÑÑм, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñй Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑаблиÑÑ Ð½Ð° диÑке, на 4 байÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки (на болÑÑинÑÑве плаÑÑоÑм), ÑÑо неÑколÑко ÑлÑÑÑÐ°ÐµÑ Ð¿ÑоизводиÑелÑноÑÑÑ.ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ OID из ÑаблиÑÑ Ð¿Ð¾Ñле ÐµÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð¾ÑполÑзÑйÑеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE.
WITH OIDSWITHOUT OIDSÐÑо ÑÑÑаÑевÑее напиÑание Ñказаний
WITH (OIDS)иWITH (OIDS=FALSE), ÑооÑвеÑÑÑвенно. ÐÑли ÑÑебÑеÑÑÑ Ð¾Ð¿ÑеделиÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно ÑвойÑÑвоOIDSи паÑамеÑÑÑ Ñ ÑанениÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ иÑполÑзоваÑÑ ÑинÑакÑиÑWITH ( ... ); Ñм. ниже.ON COMMITÐоведением вÑеменнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð² конÑе блока ÑÑанзакÑии позволÑÐµÑ ÑпÑавлÑÑÑ Ð¿Ñедложение
ON COMMIT, коÑоÑое пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи паÑамеÑÑа:PRESERVE ROWSÐикакое ÑпеÑиалÑное дейÑÑвие в конÑе ÑÑанзакÑии не вÑполнÑеÑÑÑ. ÐÑо поведение по ÑмолÑаниÑ.
DELETE ROWSÐÑе ÑÑÑоки в ÑÑой вÑеменной ÑаблиÑе бÑдÑÑ ÑдалÑÑÑÑÑ Ð² конÑе каждого блока ÑÑанзакÑии. Ðо ÑÑÑи, пÑи каждой ÑикÑаÑии ÑÑанзакÑии бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑполнÑÑÑÑÑ TRUNCATE.
DROPÐÑа вÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ ÑдалÑÑÑÑÑ Ð² конÑе ÑекÑÑего блока ÑÑанзакÑии.
TABLESPACEÑабл_пÑоÑÑÑанÑÑвоÐдеÑÑ
Ñабл_пÑоÑÑÑанÑÑвоâ Ð¸Ð¼Ñ ÑаблиÑного пÑоÑÑÑанÑÑва, в коÑоÑом бÑÐ´ÐµÑ ÑоздаваÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑаблиÑа. ÐÑли оно не Ñказано, вÑбиÑаеÑÑÑ default_tablespace или temp_tablespaces, еÑли ÑаблиÑа вÑеменнаÑ.USING INDEX TABLESPACEÑабл_пÑоÑÑÑанÑÑвоÐÑо пÑедложение позволÑÐµÑ Ð²ÑбÑаÑÑ ÑаблиÑное пÑоÑÑÑанÑÑво, в коÑоÑом бÑдÑÑ ÑоздаваÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ, ÑвÑзаннÑе Ñ Ð¾Ð³ÑаниÑениÑми
UNIQUE,PRIMARY KEYилиEXCLUDE. ÐÑли оно не Ñказано, вÑбиÑаеÑÑÑ default_tablespace или temp_tablespaces, еÑли ÑаблиÑа вÑеменнаÑ.
ÐаÑамеÑÑÑ Ñ ÑанениÑ
ÐÑедложение WITH позволÑÐµÑ ÑÑÑановиÑÑ Ð¿Ð°ÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов, ÑвÑзаннÑÑ
Ñ Ð¾Ð³ÑаниÑениÑми UNIQUE, PRIMARY KEY и EXCLUDE. ÐаÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов докÑменÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² CREATE INDEX. ÐоддеÑживаемÑе в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð½Ð¸Ð¶Ðµ. Ðак показано, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ паÑамеÑÑа ÑÑÑеÑÑвÑÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй паÑамеÑÑ Ñ Ñем же именем и пÑеÑикÑом toast., коÑоÑÑй ÑпÑавлÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ вÑоÑиÑной ÑаблиÑÑ TOAST, еÑли она еÑÑÑ (за дополниÑелÑнÑми ÑведениÑми о TOAST обÑаÑиÑеÑÑ Ðº РазделÑ 63.2). ÐÑли знаÑение некоÑоÑого паÑамеÑÑа задано Ð´Ð»Ñ ÑаблиÑÑ, а знаÑение ÑавнознаÑного паÑамеÑÑа toast. не опÑеделено, Ð´Ð»Ñ ÑаблиÑÑ TOAST бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð·Ð½Ð°Ñение паÑамеÑÑа оÑновной ÑаблиÑÑ.
fillfactor(integer)ФакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑаблиÑÑ, задаваемÑй в пÑоÑенÑÐ°Ñ , Ð¾Ñ 10 до 100. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 100 (плоÑное заполнение). ÐÑи менÑÑем ÑакÑоÑе Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑии
INSERTÑпаковÑваÑÑ Ð´Ð°Ð½Ð½Ñе в ÑÑÑаниÑÑ ÑолÑко до заданного пÑоÑенÑа; оÑÑавÑееÑÑ Ð¼ÐµÑÑо ÑезеÑвиÑÑеÑÑÑ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑок на ÑÑой ÑÑÑаниÑе. Ð ÑезÑлÑÑаÑеUPDATEполÑÑÐ°ÐµÑ ÑÐ°Ð½Ñ Ð¿Ð¾Ð¼ÐµÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑннÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÑÑÑоки в ÑÑ Ð¶Ðµ ÑÑÑаниÑÑ, ÑÑо и иÑÑ Ð¾Ð´Ð½ÑÑ, ÑÑо гоÑаздо ÑÑÑекÑивнее, Ñем ÑазмеÑаÑÑ ÐµÑ Ð½Ð° дÑÑгой ÑÑÑаниÑе. ÐÐ»Ñ ÑаблиÑ, запиÑи в коÑоÑÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не менÑÑÑÑÑ, лÑÑÑим вÑбоÑом бÑÐ´ÐµÑ Ð¿Ð»Ð¾Ñное заполнение, но Ð´Ð»Ñ Ð°ÐºÑивно изменÑемÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð»ÑÑÑе вÑбÑаÑÑ Ð¼ÐµÐ½ÑÑий ÑакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð·Ð°Ð´Ð°ÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ TOAST.autovacuum_enabled,toast.autovacuum_enabled(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ авÑооÑиÑÑки Ð´Ð»Ñ Ð¾Ð¿ÑеделÑнной ÑаблиÑÑ. Со знаÑением true демон авÑооÑиÑÑки бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑполнÑÑÑ Ð¾Ð¿ÐµÑаÑии
VACUUMи/илиANALYZEв ÑÑой ÑаблиÑе, ÑоглаÑно пÑавилам, опиÑаннÑм в ÐодÑазделе 23.1.6. Со знаÑением false ÑÑа ÑаблиÑа не бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ð²ÐµÑгаÑÑÑÑ Ð°Ð²ÑооÑиÑÑке, еÑли ÑолÑко ÑÑо не поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий. Ðолее подÑобно пÑедоÑвÑаÑение заÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸ÑÑваеÑÑÑ Ð² ÐодÑазделе 23.1.5. ÐамеÑÑÑе, ÑÑо демон авÑооÑиÑÑки не бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð²Ð¾Ð²Ñе (еÑли ÑолÑко ÑÑо не поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ), еÑли паÑамеÑÑ autovacuum Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение false; ÑÑо нелÑÐ·Ñ Ð¿ÐµÑеопÑеделиÑÑ, ÑÑÑановив паÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ. Таким обÑазом, Ñвно ÑÑÑанавливаÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа знаÑениеtrueпÑакÑиÑеÑки не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла â полезно ÑолÑко знаÑениеfalse.autovacuum_vacuum_threshold,toast.autovacuum_vacuum_threshold(integer)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_threshold Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_scale_factor,toast.autovacuum_vacuum_scale_factor(float4)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_scale_factor Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_analyze_threshold(integer)ÐнаÑение паÑамеÑÑа autovacuum_analyze_threshold Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_analyze_scale_factor(float4)ÐнаÑение паÑамеÑÑа autovacuum_analyze_scale_factor Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_cost_delay,toast.autovacuum_vacuum_cost_delay(integer)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_cost_delay Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_cost_limit,toast.autovacuum_vacuum_cost_limit(integer)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_cost_limit Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_freeze_min_age,toast.autovacuum_freeze_min_age(integer)ÐнаÑение паÑамеÑÑа vacuum_freeze_min_age Ð´Ð»Ñ ÑаблиÑÑ. УÑÑиÑе, ÑÑо ÑиÑÑема бÑÐ´ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑÑановленнÑе Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð·Ð½Ð°ÑениÑ
autovacuum_freeze_min_age, пÑевÑÑаÑÑие Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ñ ÑиÑÑемного autovacuum_freeze_max_age.autovacuum_freeze_max_age,toast.autovacuum_freeze_max_age(integer)ÐнаÑение паÑамеÑÑа autovacuum_freeze_max_age Ð´Ð»Ñ ÑаблиÑÑ. УÑÑиÑе, ÑÑо ÑиÑÑема бÑÐ´ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑÑановленнÑе Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð·Ð½Ð°ÑениÑ
autovacuum_freeze_max_age, пÑевÑÑаÑÑие знаÑение ÑиÑÑемного паÑамеÑÑа (они могÑÑ Ð±ÑÑÑ ÑолÑко менÑÑе).autovacuum_freeze_table_age,toast.autovacuum_freeze_table_age(integer)ÐнаÑение паÑамеÑÑа vacuum_freeze_table_age Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_multixact_freeze_min_age,toast.autovacuum_multixact_freeze_min_age(integer)ÐнаÑение паÑамеÑÑа vacuum_multixact_freeze_min_age Ð´Ð»Ñ ÑаблиÑÑ. УÑÑиÑе, ÑÑо демон авÑооÑиÑÑки бÑÐ´ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑÑановленнÑе Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð·Ð½Ð°ÑениÑ
autovacuum_multixact_freeze_min_age, пÑевÑÑаÑÑие Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑиÑÑемного паÑамеÑÑа autovacuum_multixact_freeze_max_age.autovacuum_multixact_freeze_max_age,toast.autovacuum_multixact_freeze_max_age(integer)ÐнаÑение паÑамеÑÑа autovacuum_multixact_freeze_max_age Ð´Ð»Ñ ÑаблиÑÑ. УÑÑиÑе, ÑÑо ÑиÑÑема авÑооÑиÑÑки бÑÐ´ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑÑановленнÑе Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ
autovacuum_multixact_freeze_max_age, пÑевÑÑаÑÑие ÑиÑÑемнÑй паÑамеÑÑ (они могÑÑ Ð±ÑÑÑ ÑолÑко менÑÑе).autovacuum_multixact_freeze_table_age,toast.autovacuum_multixact_freeze_table_age(integer)ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа vacuum_multixact_freeze_table_age Ð´Ð»Ñ ÑаблиÑÑ.
log_autovacuum_min_duration,toast.log_autovacuum_min_duration(integer)ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа log_autovacuum_min_duration Ð´Ð»Ñ ÑаблиÑÑ.
user_catalog_table(boolean)ÐбÑÑвлÑÐµÑ ÑаблиÑÑ ÐºÐ°Ðº дополниÑелÑнÑÑ ÑаблиÑÑ ÐºÐ°Ñалога, напÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Ñелей логиÑеÑкой ÑепликаÑии. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 46.6.2. ÐÐ»Ñ ÑÐ°Ð±Ð»Ð¸Ñ TOAST ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð½ÐµÐ»ÑзÑ.
ÐамеÑаниÑ
ÐÑименÑÑÑ OID в новÑÑ
пÑиложениÑÑ
не ÑекомендÑеÑÑÑ: по возможноÑÑи лÑÑÑе иÑполÑзоваÑÑ Ð² каÑеÑÑве пеÑвиÑного клÑÑа ÑаблиÑÑ SERIAL или дÑÑгой генеÑаÑÐ¾Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи. Ðднако, еÑли в ваÑем пÑиложении Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии ÑÑÑок пÑименÑеÑÑÑ OID, ÑекомендÑеÑÑÑ ÑоздаÑÑ ÑникалÑное огÑаниÑение по ÑÑолбÑÑ oid в ÑÑой ÑаблиÑе, ÑÑÐ¾Ð±Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ OID в ÑÑой ÑаблиÑе на Ñамом деле однознаÑно иденÑиÑиÑиÑовали ÑÑÑоки даже поÑле заÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑÑÑика. Также не ÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑ, ÑÑо знаÑÐµÐ½Ð¸Ñ OID ÑникалÑÐ½Ñ Ð² ÑазнÑÑ
ÑаблиÑаÑ
; еÑли вам ÑÑебÑеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ, ÑникалÑнÑй в базе даннÑÑ
, воÑполÑзÑйÑеÑÑ Ð´Ð»Ñ ÑÑого комбинаÑией tableoid и OID ÑÑÑоки.
ÐодÑказка
ÐÑименÑÑÑ OIDS=FALSE не ÑекомендÑеÑÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð±ÐµÐ· пеÑвиÑного клÑÑа, Ñак как без OID или ÑникалÑного клÑÑа даннÑÑ
Ñложно иденÑиÑиÑиÑоваÑÑ Ð¾Ð¿ÑеделÑннÑе ÑÑÑоки.
Postgres Pro авÑомаÑиÑеÑки ÑоздаÑÑ Ð¸Ð½Ð´ÐµÐºÑ, гаÑанÑиÑÑÑÑий ÑникалÑноÑÑÑ, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и огÑаниÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвиÑного клÑÑа. ÐоÑÑÐ¾Ð¼Ñ Ñвно ÑоздаваÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ ÑÑолбÑов пеÑвиÑного клÑÑа не ÑÑебÑеÑÑÑ. (Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº CREATE INDEX.)
ÐгÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи и пеÑвиÑнÑе клÑÑи в ÑекÑÑей ÑеализаÑии не наÑледÑÑÑÑÑ. ÐÑледÑÑвие ÑÑого огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи доволÑно Ð¿Ð»Ð¾Ñ Ð¾ ÑоÑеÑаÑÑÑÑ Ñ Ð½Ð°Ñледованием.
Ð ÑаблиÑе не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÑÑе 1600 ÑÑолбÑов. (Ðа пÑакÑике ÑакÑиÑеÑкий пÑедел обÑÑно ниже из-за огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° Ð´Ð»Ð¸Ð½Ñ Ð·Ð°Ð¿Ð¸Ñи.)
ÐÑимеÑÑ
Создание ÑаблиÑÑ films и ÑаблиÑÑ distributors:
CREATE TABLE films (
code char(5) CONSTRAINT firstkey PRIMARY KEY,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
);
CREATE TABLE distributors (
did integer PRIMARY KEY DEFAULT nextval('serial'),
name varchar(40) NOT NULL CHECK (name <> '')
);Создание ÑаблиÑÑ Ñ Ð´Ð²ÑмеÑнÑм маÑÑивом:
CREATE TABLE array_int (
vector int[][]
);ÐпÑеделение огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи Ð´Ð»Ñ ÑаблиÑÑ films. ÐгÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ или неÑколÑкиÑ
ÑÑолбÑов ÑаблиÑÑ:
CREATE TABLE films (
code char(5),
title varchar(40),
did integer,
date_prod date,
kind varchar(10),
len interval hour to minute,
CONSTRAINT production UNIQUE(date_prod)
);ÐпÑеделение огÑаниÑениÑ-пÑовеÑки Ð´Ð»Ñ ÑÑолбÑа:
CREATE TABLE distributors (
did integer CHECK (did > 100),
name varchar(40)
);ÐпÑеделение огÑаниÑениÑ-пÑовеÑки Ð´Ð»Ñ ÑаблиÑÑ:
CREATE TABLE distributors (
did integer,
name varchar(40),
CONSTRAINT con1 CHECK (did > 100 AND name <> '')
);ÐпÑеделение огÑаниÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвиÑного клÑÑа Ð´Ð»Ñ ÑаблиÑÑ films:
CREATE TABLE films (
code char(5),
title varchar(40),
did integer,
date_prod date,
kind varchar(10),
len interval hour to minute,
CONSTRAINT code_title PRIMARY KEY(code,title)
);ÐпÑеделение огÑаниÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвиÑного клÑÑа Ð´Ð»Ñ ÑаблиÑÑ distributors. СледÑÑÑие два пÑимеÑа ÑавнознаÑнÑ, но в пеÑвом иÑполÑзÑеÑÑÑ ÑинÑакÑÐ¸Ñ Ð¾Ð³ÑаниÑений Ð´Ð»Ñ ÑаблиÑÑ, а во вÑоÑом â Ð´Ð»Ñ ÑÑолбÑа:
CREATE TABLE distributors (
did integer,
name varchar(40),
PRIMARY KEY(did)
);
CREATE TABLE distributors (
did integer PRIMARY KEY,
name varchar(40)
);ÐпÑеделение знаÑений по ÑмолÑаниÑ: Ð´Ð»Ñ ÑÑолбÑа name знаÑением по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ ÑÑÑока, Ð´Ð»Ñ ÑÑолбÑа did â ÑледÑÑÑее знаÑение обÑекÑа поÑледоваÑелÑноÑÑи, а Ð´Ð»Ñ modtime â вÑемÑ, когда бÑла вÑÑавлена запиÑÑ:
CREATE TABLE distributors (
name varchar(40) DEFAULT 'Luso Films',
did integer DEFAULT nextval('distributors_serial'),
modtime timestamp DEFAULT current_timestamp
);ÐпÑеделение двÑÑ
огÑаниÑений NOT NULL Ð´Ð»Ñ ÑÑолбÑов ÑаблиÑÑ distributors, пÑи ÑÑом Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð´Ð°ÑÑÑÑ Ñвное имÑ:
CREATE TABLE distributors (
did integer CONSTRAINT no_null NOT NULL,
name varchar(40) NOT NULL
);ÐпÑеделение огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи Ð´Ð»Ñ ÑÑолбÑа name:
CREATE TABLE distributors (
did integer,
name varchar(40) UNIQUE
);То же Ñамое ÑÑловие, но в виде огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ:
CREATE TABLE distributors (
did integer,
name varchar(40),
UNIQUE(name)
);Создание Ñакой же ÑаблиÑÑ Ñ ÑакÑоÑом Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ 70% Ð´Ð»Ñ ÑаблиÑÑ Ð¸ ÐµÑ ÑникалÑного индекÑа:
CREATE TABLE distributors (
did integer,
name varchar(40),
UNIQUE(name) WITH (fillfactor=70)
)
WITH (fillfactor=70);Создание ÑаблиÑÑ circles Ñ Ð¾Ð³ÑаниÑением-иÑклÑÑением, не допÑÑкаÑÑим пеÑеÑеÑÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ
кÑÑгов:
CREATE TABLE circles (
c circle,
EXCLUDE USING gist (c WITH &&)
);Создание ÑаблиÑÑ cinemas в ÑаблиÑном пÑоÑÑÑанÑÑве diskvol1:
CREATE TABLE cinemas (
id serial,
name text,
location text
) TABLESPACE diskvol1;Создание ÑоÑÑавного Ñипа и ÑипизиÑованной ÑаблиÑÑ:
CREATE TYPE employee_type AS (name text, salary numeric);
CREATE TABLE employees OF employee_type (
PRIMARY KEY (name),
salary WITH OPTIONS DEFAULT 1000
);СовмеÑÑимоÑÑÑ
Ðоманда CREATE TABLE ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ SQL, Ñ Ð¾Ð¿Ð¸ÑаннÑми ниже иÑклÑÑениÑми.
ÐÑеменнÑе ÑаблиÑÑ
ХоÑÑ ÑинÑакÑÐ¸Ñ CREATE TEMPORARY TABLE подобен аналогиÑÐ½Ð¾Ð¼Ñ Ð² ÑÑандаÑÑе SQL, ÑезÑлÑÑÐ°Ñ Ð¿Ð¾Ð»ÑÑаеÑÑÑ Ð´ÑÑгим. Ð ÑÑандаÑÑе вÑеменнÑе ÑаблиÑÑ Ð¾Ð¿ÑеделÑÑÑÑÑ ÑолÑко один Ñаз и ÑÑÑеÑÑвÑÑÑ (изнаÑалÑно пÑÑÑÑе) в каждом ÑеанÑе, в коÑоÑом они иÑполÑзÑÑÑÑÑ. Postgres Pro вмеÑÑо ÑÑого ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ ÐºÐ°Ð¶Ð´Ñй ÑÐµÐ°Ð½Ñ Ð²ÑполнÑл ÑобÑÑвеннÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE TEMPORARY TABLE Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ вÑеменной ÑаблиÑÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ. ÐÑо позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð² ÑазнÑÑ
ÑеанÑаÑ
ÑаблиÑÑ Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми именами Ð´Ð»Ñ ÑазнÑÑ
Ñелей, Ñогда как пÑи подÑ
оде, ÑегламенÑиÑованном ÑÑандаÑÑом, вÑе ÑкземплÑÑÑ Ð²Ñеменной ÑаблиÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ именем Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ ÑаблиÑнÑÑ ÑÑÑÑкÑÑÑÑ.
Ðоведение вÑеменнÑÑ ÑаблиÑ, опиÑанное в ÑÑандаÑÑе, в болÑÑинÑÑве ÑвоÑм игноÑиÑÑÑÑ Ð¸ дÑÑгие СУÐÐ, Ñак ÑÑо в ÑÑом оÑноÑении Postgres Pro ведÑÑ ÑÐµÐ±Ñ Ñак же, как и ÑÑд дÑÑÐ³Ð¸Ñ Ð¡Ð£ÐÐ.
Ð ÑÑандаÑÑе SQL Ñакже ÑазделÑÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе и локалÑнÑе вÑеменнÑе ÑаблиÑÑ â в локалÑной вÑеменной ÑаблиÑе ÑодеÑжиÑÑÑ Ð¾ÑделÑнÑй Ð½Ð°Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ модÑÐ»Ñ SQL в оÑделÑном ÑеанÑе, Ñ Ð¾ÑÑ ÐµÑ Ð¾Ð¿Ñеделение Ñак же ÑазделÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸. Так как в Postgres Pro модÑли SQL не поддеÑживаÑÑÑÑ, ÑÑо ÑазлиÑие в Postgres Pro не ÑÑÑеÑÑвÑеÑ.
СовмеÑÑимоÑÑи Ñади, Postgres Pro пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐºÐ»ÑÑевÑе Ñлова GLOBAL и LOCAL в обÑÑвлении вÑеменной ÑаблиÑÑ, но в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð½Ð¸ никак не дейÑÑвÑÑÑ. ÐÑполÑзоваÑÑ Ð¸Ñ
не ÑекомендÑеÑÑÑ, Ñак как в бÑдÑÑиÑ
веÑÑиÑÑ
Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑинÑÑа иÑ
инÑеÑпÑеÑаÑиÑ, более Ð±Ð»Ð¸Ð·ÐºÐ°Ñ Ðº ÑÑандаÑÑÑ.
ÐÑедложение ON COMMIT Ð´Ð»Ñ Ð²ÑеменнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ñоже подобно опиÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð² ÑÑандаÑÑе SQL, но еÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе оÑлиÑиÑ. ÐÑли пÑедложение ON COMMIT опÑÑено, в SQL подÑазÑмеваеÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ON COMMIT DELETE ROWS. Ðднако в Postgres Pro по ÑмолÑÐ°Ð½Ð¸Ñ Ð´ÐµÐ¹ÑÑвÑÐµÑ ON COMMIT PRESERVE ROWS. ÐаÑамеÑÑ ON COMMIT DROP в ÑÑандаÑÑе SQL оÑÑÑÑÑÑвÑеÑ.
ÐеоÑложеннÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи
Ðогда огÑаниÑение UNIQUE или PRIMARY KEY не ÑвлÑеÑÑÑ Ð¾ÑложеннÑм, Postgres Pro пÑовеÑÑÐµÑ ÑникалÑноÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑоки. СÑандаÑÑ SQL говоÑиÑ, ÑÑо ÑникалÑноÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð° обеÑпеÑиваÑÑÑÑ ÑолÑко в конÑе опеÑаÑоÑа; ÑÑо ÑазлиÑие пÑоÑвлÑеÑÑÑ, напÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð³Ð´Ð° одна команда изменÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво клÑÑевÑÑ
знаÑений. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ, оговоÑенное ÑÑандаÑÑом, обÑÑвиÑе огÑаниÑение как оÑкладÑваемое (DEFERRABLE), но не оÑложенное (Ñ. е., INITIALLY IMMEDIATE). УÑÑиÑе, ÑÑо ÑÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð½Ð°ÑиÑелÑно медленнее, Ñем Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ Ð¿ÑовеÑка огÑаниÑений.
ÐгÑаниÑениÑ-пÑовеÑки Ð´Ð»Ñ ÑÑолбÑов
СÑандаÑÑ SQL говоÑиÑ, ÑÑо огÑаниÑение CHECK, опÑеделÑемое Ð´Ð»Ñ ÑÑолбÑа, Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ ÑолÑко на ÑÑолбеÑ, Ñ ÐºÐ¾ÑоÑÑм оно ÑвÑзано; ÑолÑко огÑаниÑÐµÐ½Ð¸Ñ CHECK Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÑÑÑлаÑÑÑÑ Ð½Ð° неÑколÑко ÑÑолбÑов. Ð Postgres Pro ÑÑого огÑаниÑÐµÐ½Ð¸Ñ Ð½ÐµÑ; он воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð³ÑаниÑениÑ-пÑовеÑки Ð´Ð»Ñ ÑÑолбÑов и ÑÐ°Ð±Ð»Ð¸Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾.
ÐгÑаниÑение EXCLUDE
ÐгÑаниÑÐµÐ½Ð¸Ñ EXCLUDE ÑвлÑÑÑÑÑ ÑаÑÑиÑением Postgres Pro.
NULL «ÐгÑаниÑение»
«ÐгÑаниÑение» NULL (на Ñамом деле ÑÑо не огÑаниÑение) ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro ÑÑандаÑÑа SQL, коÑоÑое Ñеализовано Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дÑÑгими СУÐÐ (и Ð´Ð»Ñ ÑиммеÑÑии Ñ Ð¾Ð³ÑаниÑением NOT NULL). Так как ÑÑо поведение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð»Ñбого ÑÑолбÑа, его пÑиÑÑÑÑÑвие не неÑÑÑ ÑмÑÑловой нагÑÑзки.
ÐаÑледование
ÐножеÑÑвенное наÑледование поÑÑедÑÑвом INHERITS ÑвлÑеÑÑÑ ÑзÑковÑм ÑаÑÑиÑением Postgres Pro. SQL:1999 и более поздние ÑÑандаÑÑÑ Ð¾Ð¿ÑеделÑÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñное наÑледование Ñ Ð´ÑÑгим ÑинÑакÑиÑом и ÑмÑÑлом. ÐаÑледование в ÑÑиле SQL:1999 пока еÑÑ Ð½Ðµ поддеÑживаеÑÑÑ Ð² Postgres Pro.
ТаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов
Postgres Pro позволÑÐµÑ ÑоздаÑÑ ÑаблиÑÑ Ð±ÐµÐ· ÑÑолбÑов (напÑимеÑ, CREATE TABLE foo();). ÐÑо ÑаÑÑиÑение ÑÑандаÑÑа SQL, коÑоÑÑй не допÑÑÐºÐ°ÐµÑ ÑаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов. ТаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов Ñами по Ñебе не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ, но еÑли иÑ
запÑеÑиÑÑ, возникаÑÑ ÑÑÑаннÑе оÑобÑе ÑиÑÑаÑии Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE DROP COLUMN, Ñак ÑÑо лÑÑÑим ваÑианÑом кажеÑÑÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑо ÑÑебование ÑÑандаÑÑа.
ÐÑедложение LIKE
ХоÑÑ Ð¿Ñедложение LIKE опиÑано в ÑÑандаÑÑе SQL, многие ваÑианÑÑ ÐµÐ³Ð¾ иÑполÑзованиÑ, допÑÑÑимÑе в PostgreSQL, в ÑÑандаÑÑе не опиÑанÑ, а некоÑоÑÑе пÑедÑÑмоÑÑеннÑе в ÑÑандаÑÑе возможноÑÑи не ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² PostgreSQL.
ÐÑедложение WITH
ÐÑедложение WITH ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro; в ÑÑандаÑÑе ни паÑамеÑÑÑ Ñ
ÑанениÑ, ни OID не оговаÑиваÑÑÑÑ.
ТаблиÑнÑе пÑоÑÑÑанÑÑва
ÐонÑепÑÐ¸Ñ ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв в Postgres Pro оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе. Ðак ÑледÑÑвие, пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ TABLESPACE и USING INDEX TABLESPACE ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми.
ТипизиÑованнÑе ÑаблиÑÑ
ТипизиÑованнÑе ÑаблиÑÑ ÑеализÑÑÑ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑво ÑÑандаÑÑа SQL. СоглаÑно ÑÑандаÑÑÑ, ÑипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑодеÑÐ¶Ð¸Ñ ÑÑолбÑÑ, ÑооÑвеÑÑÑвÑÑÑие нижележаÑÐµÐ¼Ñ ÑоÑÑÐ°Ð²Ð½Ð¾Ð¼Ñ ÑипÑ, и еÑÑ Ð¾Ð´Ð¸Ð½ ÑÑолбеÑ, ÑÑÑлаÑÑийÑÑ Ð½Ð° ÑебÑ. Postgres Pro не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑÑлаÑÑиеÑÑ Ð½Ð° ÑÐµÐ±Ñ ÑÑолбÑÑ Ñвно, но ÑÐ¾Ñ Ð¶Ðµ ÑÑÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, воÑполÑзовавÑиÑÑ OID.