CREATE TABLE
CREATE TABLE â ÑоздаÑÑ ÑаблиÑÑ
СинÑакÑиÑ
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] имÑ_ÑаблиÑÑ ( [
{ имÑ_ÑÑолбÑа Ñип_даннÑÑ
[ COMPRESSION меÑод_ÑжаÑÐ¸Ñ ] [ COLLATE пÑавило_ÑоÑÑиÑовки ] [ огÑаниÑение_ÑÑолбÑа [ ... ] ]
| огÑаниÑение_ÑаблиÑÑ
| LIKE ÑаблиÑа_иÑÑоÑник [ паÑамеÑÑ_LIKE ... ] }
[, ... ]
] )
[ INHERITS ( ÑаблиÑа_ÑодиÑÐµÐ»Ñ [, ... ] ) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { имÑ_ÑÑолбÑа | ( вÑÑажение ) } [ COLLATE пÑавило_ÑоÑÑиÑовки ] [ клаÑÑ_опеÑаÑоÑов ] [, ... ] ) ]
[ USING меÑод ]
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] имÑ_ÑаблиÑÑ
OF имÑ_Ñипа [ (
{ имÑ_ÑÑолбÑа [ WITH OPTIONS ] [ огÑаниÑение_ÑÑолбÑа [ ... ] ]
| огÑаниÑение_ÑаблиÑÑ }
[, ... ]
) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { имÑ_ÑÑолбÑа | ( вÑÑажение ) } [ COLLATE пÑавило_ÑоÑÑиÑовки ] [ клаÑÑ_опеÑаÑоÑов ] [, ... ] ) ]
[ USING меÑод ]
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] имÑ_ÑаблиÑÑ
PARTITION OF ÑаблиÑа_ÑодиÑÐµÐ»Ñ [ (
{ имÑ_ÑÑолбÑа [ WITH OPTIONS ] [ огÑаниÑение_ÑÑолбÑа [ ... ] ]
| огÑаниÑение_ÑаблиÑÑ }
[, ... ]
) ] { FOR VALUES Ñказание_гÑаниÑ_ÑекÑии | DEFAULT }
[ PARTITION BY { RANGE | LIST | HASH } ( { имÑ_ÑÑолбÑа | ( вÑÑажение ) } [ COLLATE пÑавило_ÑоÑÑиÑовки ] [ клаÑÑ_опеÑаÑоÑов ] [, ... ] ) ]
[ USING меÑод ]
[ WITH ( паÑамеÑÑ_Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ [= знаÑение] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE Ñабл_пÑоÑÑÑанÑÑво ]
ÐдеÑÑ Ð¾Ð³ÑаниÑение_ÑÑолбÑа:
[ CONSTRAINT имÑ_огÑаниÑÐµÐ½Ð¸Ñ ]
{ NOT NULL |
NULL |
CHECK ( вÑÑажение ) [ NO INHERIT ] |
DEFAULT вÑÑажение_по_ÑмолÑÐ°Ð½Ð¸Ñ |
GENERATED ALWAYS AS ( генеÑиÑÑÑÑее_вÑÑажение ) STORED |
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 ]
и огÑаниÑение_ÑаблиÑÑ:
[ CONSTRAINT имÑ_огÑаниÑÐµÐ½Ð¸Ñ ]
{ CHECK ( вÑÑажение ) [ NO INHERIT ] |
UNIQUE [ NULLS [ NOT ] DISTINCT ] ( имÑ_ÑÑолбÑа [, ... ] ) паÑамеÑÑÑ_индекÑа |
PRIMARY KEY ( имÑ_ÑÑолбÑа [, ... ] ) паÑамеÑÑÑ_индекÑа |
EXCLUDE [ USING индекÑнÑй_меÑод ] ( ÑлеменÑ_иÑклÑÑÐµÐ½Ð¸Ñ WITH опеÑаÑÐ¾Ñ [, ... ] ) паÑамеÑÑÑ_индекÑа [ WHERE ( пÑÐµÐ´Ð¸ÐºÐ°Ñ ) ] |
FOREIGN KEY ( имÑ_ÑÑолбÑа [, ... ] ) REFERENCES ÑелеваÑ_ÑаблиÑа [ ( Ñелевой_ÑÑÐ¾Ð»Ð±ÐµÑ [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE ÑÑÑлоÑное_дейÑÑвие ] [ ON UPDATE ÑÑÑлоÑное_дейÑÑвие ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
и паÑамеÑÑ_LIKE:
{ INCLUDING | EXCLUDING } { COMMENTS | COMPRESSION | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
и Ñказание_гÑаниÑ_ÑекÑии:
IN ( вÑÑажение_гÑаниÑ_ÑекÑии [, ...] ) |
FROM ( { вÑÑажение_гÑаниÑ_ÑекÑии | MINVALUE | MAXVALUE } [, ...] )
TO ( { вÑÑажение_гÑаниÑ_ÑекÑии | MINVALUE | MAXVALUE } [, ...] ) |
WITH ( MODULUS ÑиÑловаÑ_конÑÑанÑа, REMAINDER ÑиÑловаÑ_конÑÑанÑа )
паÑамеÑÑÑ_индекÑа в огÑаниÑениÑÑ
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 [ ( имÑ_ÑÑолбÑа [, ... ] ) ] }ÐпиÑание
CREATE TABLE ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ, изнаÑалÑно пÑÑÑÑÑ ÑаблиÑÑ Ð² ÑекÑÑей базе даннÑÑ
. ÐладелÑÑем ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, вÑполнивÑий ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ.
ÐÑли задано Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ (напÑимеÑ, CREATE TABLE myschema.mytable ...), ÑаблиÑа ÑоздаÑÑÑÑ Ð² Ñказанной ÑÑ
еме, в пÑоÑивном ÑлÑÑае â в ÑекÑÑей. ÐÑеменнÑе ÑаблиÑÑ ÑÑÑеÑÑвÑÑÑ Ð² ÑпеÑиалÑной ÑÑ
еме, Ñак ÑÑо пÑи Ñоздании ÑакиÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑ Ð½ÐµÐ»ÑзÑ. ÐÐ¼Ñ ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð¾ оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð¼Ñн дÑÑгиÑ
оÑноÑений (ÑаблиÑ, поÑледоваÑелÑноÑÑей, индекÑов, пÑедÑÑавлений, маÑеÑиализованнÑÑ
пÑедÑÑавлений или ÑÑоÑонниÑ
ÑаблиÑ) в ÑÑой ÑÑ
еме.
CREATE TABLE Ñакже авÑомаÑиÑеÑки ÑоздаÑÑ ÑоÑÑавной Ñип даннÑÑ
, ÑооÑвеÑÑÑвÑÑÑий одной ÑÑÑоке ÑаблиÑÑ. Таким обÑазом, Ð¸Ð¼Ñ ÑаблиÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ ÑовпадаÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑÑеÑÑвÑÑÑего Ñипа в ÑÑой же ÑÑ
еме.
ÐеобÑзаÑелÑнÑе пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑений задаÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ (пÑовеÑки), коÑоÑÑм Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдовлеÑвоÑÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑемÑе или изменÑемÑе ÑÑÑоки, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñла вÑполнена ÑÑпеÑно. ÐгÑаниÑение пÑедÑÑавлÑÐµÑ Ñобой SQL-обÑекÑ, помогаÑÑий некоÑоÑÑм ÑпоÑобом опÑеделиÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво допÑÑÑимÑÑ Ð·Ð½Ð°Ñений в ÑаблиÑе.
ÐпÑеделиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ двÑÐ¼Ñ ÑпоÑобами: в виде огÑаниÑений ÑаблиÑÑ Ð¸ в виде огÑаниÑений ÑÑолбÑа. ÐгÑаниÑение ÑÑолбÑа опÑеделÑеÑÑÑ ÐºÐ°Ðº ÑаÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑа, а огÑаниÑение ÑаблиÑÑ Ð½Ðµ пÑивÑзÑваеÑÑÑ Ðº конкÑеÑÐ½Ð¾Ð¼Ñ ÑÑолбÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ Ð½ÐµÑколÑко ÑÑолбÑов. ÐÑбÑе огÑаниÑÐµÐ½Ð¸Ñ ÑÑолбÑов можно Ñакже запиÑаÑÑ Ð² виде огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ, они Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð¿ÑоÑÑо Ð´Ð»Ñ ÑдобÑÑва запиÑи в ÑлÑÑаÑÑ , когда огÑаниÑение заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ ÑолÑко один ÑÑолбеÑ.
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑаблиÑÑ, необÑ
одимо имеÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ Ñипов вÑеÑ
ÑÑолбÑов или Ñипа в пÑедложении OF, ÑооÑвеÑÑÑвенно.
ÐаÑамеÑÑÑ
TEMPORARYилиTEMPС Ñаким Ñказанием ÑаблиÑа ÑоздаÑÑÑÑ ÐºÐ°Ðº вÑеменнаÑ. ÐÑеменнÑе ÑаблиÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑдалÑÑÑÑÑ Ð² конÑе ÑеанÑа или могÑÑ ÑдалÑÑÑÑÑ Ð² конÑе ÑекÑÑей ÑÑанзакÑии (Ñм. опиÑание
ON COMMITниже). РпÑÑÑ Ð¿Ð¾Ð¸Ñка по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÐµÑвой вклÑÑаеÑÑÑ Ð²ÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑÑ ÐµÐ¼Ð°, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾ÑÑоÑÐ½Ð½Ð°Ñ ÑаблиÑа Ñ Ñем же именем не бÑÐ´ÐµÑ Ð²ÑбиÑаÑÑÑÑ Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ Ð¿Ð»Ð°Ð½Ð¾Ð² запÑоÑов, пока ÑÑÑеÑÑвÑÐµÑ Ð²ÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ (еÑли Ð¸Ð¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð±ÐµÐ· ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ). ÐÑе индекÑÑ, ÑоздаваемÑе Ð´Ð»Ñ Ð²Ñеменной ÑаблиÑÑ, авÑомаÑиÑеÑки Ñакже ÑÑановÑÑÑÑ Ð²ÑеменнÑми.Ðемон авÑооÑиÑÑки не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑиÑаÑÑ Ð¸, как ÑледÑÑвие, ÑжимаÑÑ Ð¸ анализиÑоваÑÑ Ð²ÑеменнÑе ÑаблиÑÑ. Ðо ÑÑой пÑиÑине ÑооÑвеÑÑÑвÑÑÑие опеÑаÑии оÑиÑÑки и анализа ÑледÑÐµÑ Ð²ÑполнÑÑÑ, вÑзÑÐ²Ð°Ñ SQL-ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑÐ°Ð¼ÐºÐ°Ñ ÑеанÑа. ÐапÑимеÑ, еÑли вÑеменнÑÑ ÑаблиÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð² ÑложнÑÑ Ð·Ð°Ð¿ÑоÑÐ°Ñ , бÑÐ´ÐµÑ ÑазÑмнÑм вÑполниÑÑ Ð´Ð»Ñ Ð½ÐµÑ
ANALYZEпоÑле Ñого, как она бÑÐ´ÐµÑ Ð½Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð°.Ðо Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ добавиÑÑ Ñказание
GLOBALилиLOCALпеÑедTEMPORARYилиTEMP. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Postgres Pro и ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑей возможноÑÑÑÑ; Ñм. Ñаздел СовмеÑÑимоÑÑÑ Ð½Ð¸Ð¶Ðµ.UNLOGGEDС ÑÑим Ñказанием ÑаблиÑа ÑоздаÑÑÑÑ ÐºÐ°Ðº нежÑÑналиÑÑемаÑ. ÐаннÑе, запиÑÑваемÑе в нежÑÑналиÑÑемÑе ÑаблиÑÑ, не пÑÐ¾Ñ Ð¾Ð´ÑÑ ÑеÑез жÑÑнал пÑедзапиÑи (Ñм. ÐлавÑ 28), в ÑезÑлÑÑаÑе Ñего Ñакие ÑаблиÑÑ ÑабоÑаÑÑ Ð³Ð¾Ñаздо бÑÑÑÑее обÑÑнÑÑ . Ðднако они не заÑиÑÐµÐ½Ñ Ð¾Ñ ÑбоÑ; пÑи Ñбое или аваÑийном оÑклÑÑении ÑеÑвеÑа нежÑÑналиÑÑÐµÐ¼Ð°Ñ ÑаблиÑа авÑомаÑиÑеÑки ÑÑекаеÑÑÑ. ÐÑоме Ñого, ÑодеÑжимое нежÑÑналиÑÑемой ÑаблиÑÑ Ð½Ðµ ÑеплиÑиÑÑеÑÑÑ Ð½Ð° ведомÑе ÑеÑвеÑÑ. ÐÑбÑе индекÑÑ, ÑоздаваемÑе Ð´Ð»Ñ Ð½ÐµÐ¶ÑÑналиÑÑемой ÑаблиÑÑ, авÑомаÑиÑеÑки ÑÑановÑÑÑÑ Ð½ÐµÐ¶ÑÑналиÑÑемÑми.
С ÑÑим Ñказанием вÑе поÑледоваÑелÑноÑÑи, ÑоздаваемÑе вмеÑÑе Ñ Ð½ÐµÐ¶ÑÑналиÑÑемой ÑаблиÑей (Ð´Ð»Ñ ÑÑолбÑов иденÑиÑикаÑоÑов или ÑÑолбÑов serial), Ñакже ÑоздаÑÑÑÑ Ð½ÐµÐ¶ÑÑналиÑÑемÑми.
IF NOT EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли оÑноÑение Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание. ÐамеÑÑÑе, ÑÑо Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо ÑÑÑеÑÑвÑÑÑее оÑноÑение как-Ñо ÑооÑноÑиÑÑÑ Ñ Ñем, коÑоÑое могло Ð±Ñ Ð±ÑÑÑ Ñоздано.
имÑ_ÑаблиÑÑÐÐ¼Ñ Ñоздаваемой ÑаблиÑÑ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
OFимÑ_ÑипаСоздаÑÑ ÑипизиÑованнÑÑ ÑаблиÑÑ, ÑÑÑÑкÑÑÑа коÑоÑой опÑеделÑеÑÑÑ ÑказаннÑм ÑоÑÑавнÑм Ñипом (его Ð¸Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ ÑÑ ÐµÐ¼Ð¾Ð¹). ТипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа пÑивÑзана к поÑодивÑÐµÐ¼Ñ ÐµÑ ÑипÑ; напÑимеÑ, пÑи Ñдалении Ñипа (командой
DROP TYPE ... CASCADE) бÑÐ´ÐµÑ Ñдалена и ÑÑа ÑаблиÑа.Ðогда ÑоздаÑÑÑÑ ÑипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ ÐµÑ ÑÑолбÑов опÑеделÑÑÑÑÑ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñим ÑоÑÑавнÑм Ñипом, а не задаÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
CREATE TABLE. ÐоCREATE TABLEÐ¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² ÑаблиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ огÑаниÑениÑ, а Ñакже задаÑÑ Ð¿Ð°ÑамеÑÑÑ ÐµÑ Ñ ÑанениÑ.имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа, Ñоздаваемого в новой ÑаблиÑе.
Ñип_даннÑÑТип даннÑÑ ÑÑолбÑа (Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¾Ð¿Ñеделение маÑÑива Ñ ÑÑим Ñипом). Ðа дополниÑелÑнÑми ÑведениÑми о ÑÐ¸Ð¿Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑе поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Postgres Pro, обÑаÑиÑеÑÑ Ðº Ðлаве 8.
COLLATEпÑавило_ÑоÑÑиÑовкиÐÑедложение
COLLATEназнаÑÐ°ÐµÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ ÑÑолбÑа (коÑоÑÑй должен имеÑÑ Ñип, поддеÑживаÑÑий ÑоÑÑиÑовкÑ). ÐÑли оно оÑÑÑÑÑÑвÑеÑ, иÑполÑзÑеÑÑÑ Ð¿Ñавило ÑоÑÑиÑовки по ÑмолÑаниÑ, ÑÑÑановленное Ð´Ð»Ñ Ñипа даннÑÑ ÑÑолбÑа.COMPRESSIONмеÑод_ÑжаÑиÑУказание
COMPRESSIONзадаÑÑ Ð¼ÐµÑод ÑжаÑÐ¸Ñ Ð´Ð»Ñ ÑÑолбÑа. СжаÑие поддеÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ Ñипов даннÑÑ Ð¿ÐµÑеменной Ð´Ð»Ð¸Ð½Ñ Ð¸ пÑименÑеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑÑолбÑов Ñ Ñежимом Ñ ÑанениÑmainилиextended. (Ð ÑÐµÐ¶Ð¸Ð¼Ð°Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑолбÑов ÑаÑÑказÑваеÑÑÑ Ð² ALTER TABLE.) Ðаданное Ð´Ð»Ñ ÑекÑиониÑованной ÑаблиÑÑ ÑÑо ÑвойÑÑво не оказÑÐ²Ð°ÐµÑ Ð¿ÑÑмого дейÑÑвиÑ, Ñак как Ñакие ÑаблиÑÑ Ñами по Ñебе не ÑодеÑÐ¶Ð°Ñ Ð´Ð°Ð½Ð½Ñе, но ÑÑÑановленное знаÑение бÑдÑÑ Ð½Ð°ÑледоваÑÑ ÐµÑ Ð½Ð¾Ð²Ñе ÑекÑии. ÐоддеÑживаÑÑÑÑ ÑледÑÑÑие меÑÐ¾Ð´Ñ ÑжаÑиÑ:pglzиlz4. (lz4поддеÑживаеÑÑÑ, ÑолÑко еÑли Postgres Pro бÑл ÑобÑан Ñ ÐºÐ»ÑÑом--with-lz4.) ÐÑоме Ñого,меÑод_ÑжаÑиÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñениеdefault, Ñвно вÑбиÑаÑÑее поведение по ÑмолÑÐ°Ð½Ð¸Ñ â когда пÑименÑемÑй меÑод опÑеделÑеÑÑÑ Ð·Ð½Ð°Ñением default_toast_compression во вÑÐµÐ¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ .INHERITS (ÑаблиÑа_ÑодиÑелÑ[, ... ] )ÐеобÑзаÑелÑное пÑедложение
INHERITSопÑеделÑÐµÑ ÑпиÑок ÑаблиÑ, Ð¾Ñ ÐºÐ¾ÑоÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки наÑледоваÑÑ Ð²Ñе ÑÑолбÑÑ. РодиÑелÑÑкие ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¾Ð±ÑÑнÑми или ÑÑоÑонними ÑаблиÑами.ÐÑи иÑполÑзовании
INHERITSÑоздаÑÑÑÑ Ð¿Ð¾ÑÑоÑÐ½Ð½Ð°Ñ ÑвÑÐ·Ñ Ð´Ð¾ÑеÑней ÑаблиÑÑ Ñ ÑодиÑелÑÑкими. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð² ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ Ð¾Ð±ÑÑно Ñакже оÑÑажаÑÑÑÑ Ð² доÑеÑÐ½Ð¸Ñ , и по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñи ÑÑении ÑодиÑелÑÑÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² ÑезÑлÑÑÐ°Ñ Ð²ÐºÐ»ÑÑаÑÑÑÑ Ð´Ð°Ð½Ð½Ñе доÑеÑней ÑаблиÑÑ.Ðогда в неÑколÑÐºÐ¸Ñ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ Ð¾ÐºÐ°Ð·ÑваÑÑÑÑ ÑÑолбÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ именем, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка, за иÑклÑÑением ÑлÑÑаÑ, когда ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²ÑÐµÑ ÑÑÐ¸Ñ ÑÑолбÑов в ÑаблиÑÐ°Ñ ÑовпадаÑÑ. Ð ÑÑом ÑлÑÑае одноимÑннÑе ÑÑолбÑÑ Ð¾Ð±ÑединÑÑÑÑÑ Ð¸ ÑоÑмиÑÑÑÑ Ð¾Ð´Ð¸Ð½ ÑÑÐ¾Ð»Ð±ÐµÑ Ð² новой ÑаблиÑе. ÐÑли Ð¸Ð¼Ñ ÑÑолбÑа новой ÑаблиÑÑ ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ одного из ÑнаÑледованнÑÑ ÑÑолбÑов, Ð¸Ñ ÑÐ¸Ð¿Ñ Ñак же Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ, и в ÑÑом ÑлÑÑае опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑов Ñоже ÑливаÑÑÑÑ Ð² однÑ. ÐÑли в новой ÑаблиÑе Ñвно ÑказÑваеÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑолбÑа, ÑÑо знаÑение пеÑеопÑеделÑÐµÑ Ð»ÑбÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, ÑнаÑледованнÑе ÑÑим ÑÑолбÑом. РпÑоÑивном ÑлÑÑае, еÑли знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð² ÑазнÑÑ ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑÐ°Ñ , ÑÑи опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ, инаÑе пÑоизойдÑÑ Ð¾Ñибка.
ÐгÑаниÑениÑ
CHECKобÑединÑÑÑÑÑ Ð²Ð¼ÐµÑÑе по ÑÑÑи Ñак же, как и ÑÑолбÑÑ: еÑли неÑколÑко ÑодиÑелÑÑÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸/или опÑеделение новой ÑаблиÑÑ ÑодеÑÐ¶Ð°Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑе огÑаниÑениÑCHECK, ÑÑим огÑаниÑениÑм Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑовеÑки, в пÑоÑивном ÑлÑÑае пÑоизойдÑÑ Ð¾Ñибка. Ð ÑлÑÑае ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð²ÑÑажениÑ, ÑÑи огÑаниÑÐµÐ½Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ñм вÑÑажением обÑединÑÑÑÑÑ Ð² одно. ÐÑи ÑÑом огÑаниÑÐµÐ½Ð¸Ñ Ñо ÑвойÑÑвомNO INHERITв ÑодиÑелÑÑкой ÑаблиÑе иÑклÑÑаÑÑÑÑ Ð¸Ð· ÑаÑÑмоÑÑениÑ. ÐамеÑÑÑе, ÑÑо безÑмÑнное огÑаниÑениеCHECKв новой ÑаблиÑе никогда не ÑливаеÑÑÑ Ñ Ð´ÑÑгими, Ñак как Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ вÑегда вÑбиÑаеÑÑÑ ÑникалÑное имÑ.ÐаÑамеÑÑÑ
STORAGEÐ´Ð»Ñ ÑÑолбÑа Ñак же копиÑÑÑÑÑÑ Ð¸Ð· ÑодиÑелÑÑÐºÐ¸Ñ ÑаблиÑ.ÐÑли ÑÑÐ¾Ð»Ð±ÐµÑ Ð² ÑодиÑелÑÑкой ÑаблиÑе ÑвлÑеÑÑÑ ÑÑолбÑом иденÑиÑикаÑии, ÑÑо ÑвойÑÑво не наÑледÑеÑÑÑ. ÐÑли ÑÑебÑеÑÑÑ, в доÑеÑней ÑаблиÑе ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ обÑÑвиÑÑ ÑÑолбÑом иденÑиÑикаÑии.
PARTITION BY { RANGE | LIST | HASH } ( {имÑ_ÑÑолбÑа| (вÑÑажение) } [клаÑÑ_опеÑаÑоÑов] [, ...] )ÐеобÑзаÑелÑное пÑедложение
PARTITION BYзадаÑÑ ÑÑÑаÑÐµÐ³Ð¸Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑÑ. ТаблиÑа, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ñ ÑÑим Ñказанием, назÑваеÑÑÑ ÑекÑиониÑÑемой ÑаблиÑей. ÐадаваемÑй в ÑÐºÐ¾Ð±ÐºÐ°Ñ ÑпиÑок ÑÑолбÑов или вÑÑажений ÑоÑмиÑÑÐµÑ ÐºÐ»ÑÑ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑÑ. ÐÐ»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ диапазонам или по Ñ ÐµÑÑ ÐºÐ»ÑÑ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð½ÐµÑколÑко ÑÑолбÑов или вÑÑажений (до 32, но ÑÑÐ¾Ñ Ð¿Ñедел можно измениÑÑ Ð¿Ñи ÑбоÑке Postgres Pro), но Ð´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑпиÑкам клÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоÑÑоÑÑÑ Ð¸Ð· одного ÑÑолбÑа или вÑÑажениÑ.ÐÐ»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ диапазонам и по ÑпиÑкам нÑжен клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов B-деÑева, Ñогда как Ð´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ ÑÑебÑеÑÑÑ ÐºÐ»Ð°ÑÑ Ð¾Ð¿ÐµÑаÑоÑов Ñ ÐµÑиÑованиÑ. ÐÑли клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов не задан Ñвно, бÑÐ´ÐµÑ Ð¿ÑименÑн клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего Ñипа; в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñакого клаÑÑа вÑдаÑÑÑÑ Ð¾Ñибка. ÐÐ»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ð¿ÑименÑемÑй клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов должен ÑеализовÑваÑÑ Ð¾Ð¿Ð¾ÑнÑÑ ÑÑнкÑÐ¸Ñ 2 (Ñм. ÐодÑаздел 37.16.3).
СекÑиониÑÑÐµÐ¼Ð°Ñ ÑаблиÑа ÑазделÑеÑÑÑ Ð½Ð° подÑаблиÑÑ (назÑваемÑе ÑекÑиÑми), коÑоÑÑе ÑоздаÑÑÑÑ Ð¾ÑделÑнÑми командами
CREATE TABLE. Сама по Ñебе ÑекÑиониÑÑÐµÐ¼Ð°Ñ ÑаблиÑа не ÑодеÑÐ¶Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ . СÑÑока даннÑÑ , вÑÑавлÑÐµÐ¼Ð°Ñ Ð² ÑÑÑ ÑаблиÑÑ, пеÑенапÑавлÑеÑÑÑ Ð² ÑекÑÐ¸Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ð·Ð½Ð°Ñений ÑÑолбÑов или вÑÑажений в клÑÑе ÑекÑиониÑованиÑ. ÐÑли знаÑениÑм в новой ÑÑÑоке не ÑооÑвеÑÑÑвÑÐµÑ Ð½Ð¸ одна из ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑекÑий, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка.СекÑиониÑÑемÑе ÑаблиÑÑ Ð½Ðµ поддеÑживаÑÑ Ð¾Ð³ÑаниÑениÑ
EXCLUDE; однако Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе опÑеделиÑÑ Ñакие огÑаниÑÐµÐ½Ð¸Ñ Ð² оÑделÑнÑÑ ÑекÑиÑÑ .УзнаÑÑ Ð±Ð¾Ð»ÑÑе о ÑекÑиониÑовании ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ в Разделе 5.11.
PARTITION OFÑаблиÑа_ÑодиÑелÑ{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT }СоздаÑÑ ÑаблиÑÑ Ð² виде ÑекÑии Ñказанной ÑодиÑелÑÑкой ÑаблиÑÑ. ТаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ Ð»Ð¸Ð±Ð¾ как ÑекÑÐ¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÑеделÑннÑÑ Ð·Ð½Ð°Ñений (иÑполÑзÑÑ
FOR VALUES), либо как ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (иÑполÑзÑÑDEFAULT). ÐÑо Ñказание непÑиемлемо Ð´Ð»Ñ ÑаблиÑ, ÑекÑиониÑÑемÑÑ Ð¿Ð¾ Ñ ÐµÑÑ. Ð ÑоздаваемÑÑ ÑекÑÐ¸Ñ ÐºÐ¾Ð¿Ð¸ÑÑÑÑÑÑ Ð²Ñе индекÑÑ, огÑаниÑÐµÐ½Ð¸Ñ Ð¸ полÑзоваÑелÑÑкие ÑÑиггеÑÑ ÑÑÐ¾Ð²Ð½Ñ ÑÑÑок.ÐдеÑÑ
Ñказание_гÑаниÑ_ÑекÑиидолжно ÑооÑвеÑÑÑвоваÑÑ Ð¼ÐµÑÐ¾Ð´Ñ Ð¸ клÑÑÑ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑодиÑелÑÑкой ÑаблиÑÑ Ð¸ не должно конÑликÑоваÑÑ Ñ Ð»Ñбой ÑÑÑеÑÑвÑÑÑей ÑекÑией Ñого же ÑодиÑелÑ. ÐаÑÐ¸Ð°Ð½Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑINиÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑпиÑкам, Ñогда как ваÑÐ¸Ð°Ð½Ñ ÑFROMиTOÐ´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ диапазонам, а ÑWITHâ Ð´Ð»Ñ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ.вÑÑажение_гÑаниÑ_ÑекÑииâ лÑбое вÑÑажение без пеÑеменнÑÑ (подзапÑоÑÑ, оконнÑе, агÑегаÑнÑе и возвÑаÑаÑÑие множеÑÑва ÑÑнкÑии в нÑм не допÑÑкаÑÑÑÑ). Ðго Ñип даннÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸ÑÑ Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего ÑÑолбÑа в клÑÑе ÑекÑиониÑованиÑ. ÐÑо вÑÑажение вÑÑиÑлÑеÑÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¶Ð´Ñ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑаблиÑÑ, поÑÑÐ¾Ð¼Ñ Ð² нÑм могÑÑ Ð²ÑзÑваÑÑÑÑ Ð´Ð°Ð¶Ðµ изменÑивÑе ÑÑнкÑии, напÑимеÑ.CURRENT_TIMESTAMPÐÑи Ñоздании ÑекÑии Ñ ÑекÑиониÑованием по ÑпиÑкам возможно ÑказаÑÑ, ÑÑо ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ»ÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ NULL, вклÑÑив в ÑпиÑок ÑекÑии
NULL. Ðднако Ñ Ð¾ÑделÑно взÑÑой ÑодиÑелÑÑкой ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ болÑÑе одной Ñакой ÑекÑии. ÐÐ»Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð½ÑÑ ÑекÑийNULLзадаÑÑ Ð½ÐµÐ»ÑзÑ.ÐÑи Ñоздании диапазонной ÑекÑии нижнÑÑ Ð³ÑаниÑа, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ð²Ð¾
FROM, вклÑÑаеÑÑÑ Ð² диапазон, а веÑÑ Ð½ÑÑ Ð³ÑаниÑа, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ð²TOâ иÑклÑÑаеÑÑÑ. То еÑÑÑ, знаÑениÑ, задаваемÑе в ÑпиÑкеFROM, ÑвлÑÑÑÑÑ Ð´Ð¾Ð¿ÑÑÑимÑми знаÑениÑми ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ ÑÑолбÑов клÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑой ÑекÑии, а знаÑÐµÐ½Ð¸Ñ Ð² ÑпиÑкеTOâ неÑ. ÐамеÑÑÑе, ÑÑо ÑÑо ÑÑвеÑждение должно воÑпÑинимаÑÑÑÑ Ñ ÑÑÑÑом пÑавил ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑÑÑок ÑаблиÑÑ (Ñм. ÐодÑаздел 9.24.5). ÐапÑимеÑ, Ñ ÑекÑиониÑованиемPARTITION BY RANGE (x,y), ÑекÑÐ¸Ñ Ñ Ð³ÑаниÑамиFROM (1, 2) TO (3, 4)пÑимеÑx=1Ñ Ð»ÑбÑм знаÑениемy>=2,x=2Ñ Ð»ÑбÑмy, оÑлиÑнÑм Ð¾Ñ NULL, иx=3Ñ Ð»ÑбÑмy<4.СпеÑиалÑнÑе знаÑениÑ
MINVALUEиMAXVALUEмогÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ñи Ñоздании диапазонной ÑекÑии Ð´Ð»Ñ ÑказаниÑ, ÑÑо нижнÑÑ Ð¸Ð»Ð¸ веÑÑ Ð½ÑÑ Ð³ÑаниÑа Ð´Ð»Ñ Ð·Ð½Ð°Ñений ÑÑолбÑа оÑÑÑÑÑÑвÑеÑ. ÐапÑимеÑ, ÑекÑиÑ, опÑеделÑÐ½Ð½Ð°Ñ Ñ ÑказаниемFROM (MINVALUE) TO (10), бÑÐ´ÐµÑ Ð¿ÑинимаÑÑ Ð»ÑбÑе знаÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑÑе 10, а ÑекÑиÑ, опÑеделÑÐ½Ð½Ð°Ñ Ñ ÑказаниемFROM (10) TO (MAXVALUE), â лÑбÑе знаÑениÑ, коÑоÑÑе болÑÑе или ÑÐ°Ð²Ð½Ñ 10.ÐÑи Ñоздании диапазонной ÑекÑии Ñ Ð±Ð¾Ð»ÐµÐµ Ñем одним ÑÑолбÑом Ð¼Ð¾Ð¶ÐµÑ Ñакже имеÑÑ ÑмÑÑл иÑполÑзоваÑÑ
MAXVALUEв опÑеделении нижней гÑаниÑÑ, аMINVALUEâ веÑÑ Ð½ÐµÐ¹. ÐапÑимеÑ, ÑекÑиÑ, опÑеделÑÐ½Ð½Ð°Ñ Ñ ÑказаниемFROM (0, MAXVALUE) TO (10, MAXVALUE), бÑÐ´ÐµÑ Ð¿ÑинимаÑÑ Ð»ÑбÑе ÑÑÑоки, в коÑоÑÑÑ Ð¿ÐµÑвÑй ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ»ÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð¾Ð»ÑÑе 0 и менÑÑе или Ñавен 10. ÐодобнÑм обÑазом, ÑекÑиÑ, опÑеделÑÐ½Ð½Ð°Ñ Ñ ÑказаниемFROM ('a', MINVALUE) TO ('b', MINVALUE), бÑÐ´ÐµÑ Ð¿ÑинимаÑÑ ÑÑÑоки, в коÑоÑÑÑ Ð¿ÐµÑвÑй ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ»ÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑинаеÑÑÑ Ñ Â«a».ÐамеÑÑÑе, ÑÑо еÑли Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑолбÑа в гÑаниÑе ÑекÑии задаÑÑÑÑ
MINVALUEилиMAXVALUE, Ñо же знаÑение должно пÑименÑÑÑÑÑ Ð¸ Ð´Ð»Ñ Ð²ÑÐµÑ Ð¿Ð¾ÑледÑÑÑÐ¸Ñ ÑÑолбÑов. ÐапÑимеÑ, гÑаниÑа(10, MINVALUE, 0)бÑÐ´ÐµÑ Ð½ÐµÐºÐ¾ÑÑекÑной; допÑÑÑÐ¸Ð¼Ð°Ñ Ð³ÑаниÑа:(10, MINVALUE, MINVALUE).Также замеÑÑÑе, ÑÑо Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ñипов ÑлеменÑов, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº
timestamp, наÑÑÐ´Ñ Ñ Ð´ÑÑгими знаÑениÑми допÑÑкаеÑÑÑ Ð·Ð½Ð°Ñение "infinity" (беÑконеÑноÑÑÑ). Ðно оÑлиÑаеÑÑÑ Ð¾Ñ Ð²Ð°ÑианÑовMINVALUEиMAXVALUE, коÑоÑÑе на Ñамом деле не обознаÑаÑÑ Ð·Ð½Ð°ÑениÑ, коÑоÑÑе можно ÑÐ¾Ñ ÑаниÑÑ, а пÑоÑÑо говоÑÑÑ Ð¾ Ñом, ÑÑо знаÑение не огÑаниÑено.MAXVALUEможно воÑпÑинимаÑÑ ÐºÐ°Ðº знаÑение, коÑоÑое болÑÑе лÑбого дÑÑгого, вклÑÑÐ°Ñ "беÑконеÑноÑÑÑ", аMINVALUEменÑÑе лÑбого дÑÑгого знаÑениÑ, вклÑÑÐ°Ñ "минÑÑ Ð±ÐµÑконеÑноÑÑÑ". Таким обÑазом, диапазонFROM ('infinity') TO (MAXVALUE)не бÑÐ´ÐµÑ Ð¿ÑÑÑÑм, а бÑÐ´ÐµÑ Ð¿ÑинимаÑÑ Ñовно одно знаÑение â «infinity».С Ñказанием
DEFAULTÑаблиÑа пÑиÑоединÑеÑÑÑ Ðº ÑодиÑелÑÑкой ÑаблиÑе как ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐÐ»Ñ ÑаблиÑ, ÑекÑиониÑÑемÑÑ Ð¿Ð¾ Ñ ÐµÑÑ, ÑÑо Ñказание не поддеÑживаеÑÑÑ. ÐлÑÑ ÑекÑиониÑованиÑ, не попадаÑÑий ни в Ð¾Ð´Ð½Ñ Ð¸Ð· ÑекÑий данного ÑодиÑелÑ, бÑÐ´ÐµÑ Ð¾ÑпÑавлен в ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.Ðогда Ñ ÑаблиÑÑ ÐµÑÑÑ ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (
DEFAULT) и к ней добавлÑеÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑекÑиÑ, ÑÑебÑеÑÑÑ Ð¿ÑоÑканиÑоваÑÑ ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо она не ÑодеÑÐ¶Ð¸Ñ ÑÑÑоки, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾ÑноÑиÑÑÑÑ Ðº новой ÑекÑии. ÐÑли она ÑодеÑÐ¶Ð¸Ñ Ð±Ð¾Ð»ÑÑое колиÑеÑÑво ÑÑÑок, ÑÑо ÑканиÑование Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð»Ð¸ÑелÑнÑм. СканиÑование не бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ, еÑли ÑекÑÐ¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑвлÑеÑÑÑ ÑÑоÑонней ÑаблиÑей или в ней еÑÑÑ Ð¾Ð³ÑаниÑение, гаÑанÑиÑÑÑÑее оÑÑÑÑÑÑвие в ÑÑой ÑекÑии ÑÑÑок, подлежаÑÐ¸Ñ Ð¿ÐµÑемеÑÐµÐ½Ð¸Ñ Ð² новÑÑ ÑекÑиÑ.ÐÑи Ñоздании ÑекÑии Ñ ÑекÑиониÑованием по Ñ ÐµÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ задаваÑÑÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ Ð¸ оÑÑаÑок. ÐодÑлем должно бÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑное ÑиÑло, а оÑÑаÑком неоÑÑиÑаÑелÑное ÑиÑло, менÑÑее модÑлÑ. ÐбÑÑно пÑи наÑалÑной наÑÑÑойке ÑаблиÑÑ Ñ ÑекÑиониÑованием по Ñ ÐµÑÑ Ð½Ñжно вÑбÑаÑÑ Ð¼Ð¾Ð´ÑлÑ, ÑавнÑй колиÑеÑÑÐ²Ñ ÑекÑий, и назнаÑиÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑекÑии ÑÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð¸ ÑазнÑе оÑÑаÑки (Ñм. пÑимеÑÑ Ð½Ð¸Ð¶Ðµ). Ðднако ÑекÑиÑм можно назнаÑиÑÑ Ð¸ ÑазнÑе модÑли, Ñ ÑÑловием, ÑÑо модÑли, назнаÑеннÑе ÑекÑиÑм ÑаблиÑÑ, ÑекÑиониÑÑемой по Ñ ÐµÑÑ, ÑвлÑÑÑÑÑ Ð´ÐµÐ»Ð¸ÑелÑми ÑледÑÑÑÐ¸Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð¼Ð¾Ð´Ñлей. ÐÑо позволÑÐµÑ Ð¿Ð¾ÑÑепенно ÑвелиÑиваÑÑ ÑиÑло ÑекÑий, не пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ñ Ð¿Ð¾Ð»Ð½Ð¾Ðµ пеÑемеÑение вÑÐµÑ Ð´Ð°Ð½Ð½ÑÑ . ÐапÑимеÑ, пÑедположим, ÑÑо Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑаблиÑа, ÑекÑиониÑÑÐµÐ¼Ð°Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ð½Ð° 8 ÑекÑий, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из коÑоÑÑÑ Ð½Ð°Ð·Ð½Ð°Ñен модÑÐ»Ñ 8, и возникла Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ ÑвелиÑиÑÑ ÑиÑло ÑекÑий до 16. ÐÑ Ð¼Ð¾Ð¶ÐµÑе оÑÑоединиÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð· ÑекÑий по модÑÐ»Ñ 8, ÑоздаÑÑ Ð´Ð²Ðµ новÑе ÑекÑии по модÑÐ»Ñ 16, покÑÑваÑÑÐ¸Ñ ÑÑ Ð¶Ðµ ÑаÑÑÑ Ð¿ÑоÑÑÑанÑÑва клÑÑа (Ð¾Ð´Ð½Ñ Ñ Ð¾ÑÑаÑком, ÑавнÑм оÑÑаÑÐºÑ Ð¾ÑÑоединÑнной ÑекÑии, а вÑоÑÑÑ Ñ Ð¾ÑÑаÑком, ÑавнÑм ÑÐ¾Ð¼Ñ Ð¶Ðµ оÑÑаÑÐºÑ Ð¿Ð»ÑÑ 8), и Ð²Ð½Ð¾Ð²Ñ Ð½Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ Ð¸Ñ Ð´Ð°Ð½Ð½Ñми. ÐÑ Ð¼Ð¾Ð¶ÐµÑе повÑоÑÑÑÑ ÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ (возможно, позже) Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ ÑекÑий по модÑÐ»Ñ 8, пока вÑе они не бÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ. ХоÑÑ Ð¸ пÑи Ñаком Ð¿Ð¾Ð´Ñ Ð¾Ð´Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑемеÑаÑÑ Ð±Ð¾Ð»ÑÑие обÑÑÐ¼Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° каждом ÑÑапе, ÑÑо вÑÑ Ð¶Ðµ лÑÑÑе, Ñем ÑоздаваÑÑ Ð°Ð±ÑолÑÑно новÑÑ ÑаблиÑÑ Ð¸ пеÑемеÑаÑÑ Ð²Ñе даннÑе ÑÑазÑ.
Ð ÑекÑии Ð´Ð¾Ð»Ð¶Ð½Ñ ÑодеÑжаÑÑÑÑ ÑÑолбÑÑ Ñ Ñеми же именами и Ñипами, ÑÑо и в ÑекÑиониÑованной ÑаблиÑе, к коÑоÑой она оÑноÑиÑÑÑ. Ðзменение имÑн и Ñипов ÑÑолбÑов в ÑекÑиониÑÑемой ÑаблиÑе бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð²Ð¾ вÑе ÑекÑии. ÐгÑаниÑениÑ
CHECKбÑдÑÑ Ð½Ð°ÑледоваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки вÑеми ÑекÑиÑми, но Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑекÑий могÑÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе огÑаниÑениÑCHECK; дополниÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ Ñ Ñеми же именами и ÑÑловиÑми, как в ÑодиÑелÑÑкой ÑаблиÑе, бÑдÑÑ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ñ ÑодиÑелÑÑким огÑаниÑением. Также незавиÑимо Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑекÑии могÑÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. Ðо замеÑÑÑе, ÑÑо знаÑение по ÑмолÑаниÑ, заданное на ÑÑовне ÑекÑии, не бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð¿Ñи добавлении ÑÑÑок ÑеÑез ÑекÑиониÑованнÑÑ ÑаблиÑÑ.СÑÑоки, добавлÑемÑе в ÑекÑиониÑованнÑÑ ÑаблиÑÑ, бÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки пеÑенапÑавлÑÑÑÑÑ Ð² ÑооÑвеÑÑÑвÑÑÑÑÑ ÑекÑиÑ. ÐÑли Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑей ÑекÑии не найдÑÑÑÑ, пÑоизойдÑÑ Ð¾Ñибка.
Такие опеÑаÑии, как
TRUNCATE, обÑÑно заÑÑагиваÑÑ Ð¸ ÑÐ°Ð¼Ñ ÑаблиÑÑ, и каÑкадно ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð½Ð° вÑе доÑеÑние ÑекÑии, но могÑÑ Ñакже вÑполнÑÑÑÑÑ Ð² оÑделÑнÑÑ ÑекÑиÑÑ .ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑекÑии Ñ Ð¸ÑполÑзованием
PARTITION OFÑÑебÑеÑÑÑ Ð¿Ñименение блокиÑовкиACCESS EXCLUSIVEÐ´Ð»Ñ ÑодиÑелÑÑкой ÑекÑиониÑованной ÑаблиÑÑ. ÐналогиÑно Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑекÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑDROP TABLEÑÑебÑеÑÑÑ ÑÑÑановиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑACCESS EXCLUSIVEв ÑодиÑелÑÑкой ÑаблиÑе. ÐÐ»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑий Ñ Ð¼ÐµÐ½ÐµÐµ ÑÑÑогой блокиÑовкой можно иÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑALTER TABLE ATTACH/DETACH PARTITION, Ñем ÑамÑм Ñнизив влиÑние на паÑаллелÑнÑе опеÑаÑии Ñ ÑекÑиониÑованной ÑаблиÑей.LIKEÑаблиÑа_иÑÑоÑник[паÑамеÑÑ_LIKE... ]ÐÑедложение
LIKEопÑеделÑÐµÑ ÑаблиÑÑ, из коÑоÑой в новÑÑ ÑаблиÑÑ Ð±ÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð²Ñе имена ÑÑолбÑов, Ð¸Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° NULL.РоÑлиÑие оÑ
INHERITS, Ð½Ð¾Ð²Ð°Ñ Ð¸ иÑÑ Ð¾Ð´Ð½Ð°Ñ ÑаблиÑа ÑÑановÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑми поÑле завеÑÑÐµÐ½Ð¸Ñ ÑозданиÑ. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе не оÑÑажаÑÑÑÑ Ð² новой, а даннÑе новой ÑаблиÑÑ Ð½Ðµ вклÑÑаÑÑÑÑ Ð² ÑезÑлÑÑÐ°Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹.ÐÑоме Ñого, в оÑлиÑие оÑ
INHERITS, ÑÑолбÑÑ Ð¸ огÑаниÑениÑ, копиÑÑемÑе командойLIKE, не обÑединÑÑÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑми ÑÑолбÑами и огÑаниÑениÑми. ÐÑли дÑблиÑÑÑÑееÑÑ Ð¸Ð¼Ñ ÑказÑваеÑÑÑ Ñвно или Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð² дÑÑгом пÑедложенииLIKE, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка.ÐеобÑзаÑелÑнÑе пÑедложениÑ
паÑамеÑÑ_LIKEÑказÑваÑÑ, какие дополниÑелÑнÑе ÑвойÑÑва иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð±ÑдÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ. УказаниеINCLUDINGкопиÑÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑвойÑÑво, аEXCLUDINGиÑклÑÑÐ°ÐµÑ ÐµÐ³Ð¾. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑEXCLUDING. ÐÑли к Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑа оÑноÑÑÑÑÑ Ð½ÐµÑколÑко Ñказаний, бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð¿Ð¾Ñледнее. ÐопÑÑÑимÑе ÑказаниÑ:INCLUDING COMMENTSÐопиÑоваÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ð´Ð»Ñ ÑкопиÑованнÑÑ ÑÑолбÑов, огÑаниÑений и индекÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии не копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего ÑкопиÑованнÑе ÑÑолбÑÑ Ð¸ огÑаниÑÐµÐ½Ð¸Ñ Ð² новой ÑаблиÑе оказÑваÑÑÑÑ Ð±ÐµÐ· комменÑаÑиев.
INCLUDING COMPRESSIONÐопиÑоваÑÑ Ð¼ÐµÑод ÑжаÑÐ¸Ñ Ð´Ð»Ñ ÑÑолбÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¼ÐµÑода ÑжаÑÐ¸Ñ Ð½Ðµ копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ ÑÑолбÑов вÑбиÑаеÑÑÑ Ð¼ÐµÑод ÑжаÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.
INCLUDING CONSTRAINTSÐопиÑоваÑÑ Ð¾Ð³ÑаниÑениÑ-пÑовеÑки (
CHECK). Рданном конÑекÑÑе огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÑовне ÑÑолбÑов и на ÑÑовне ÑаблиÑÑ Ð½Ðµ ÑазлиÑаÑÑÑÑ. ÐгÑаниÑÐµÐ½Ð¸Ñ NOT NULL копиÑÑÑÑÑÑ Ð² новÑÑ ÑаблиÑÑ Ð²Ñегда.INCLUDING DEFAULTSÐопиÑоваÑÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений по ÑмолÑÐ°Ð½Ð¸Ñ Ð² опÑеделениÑÑ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего в новой ÑаблиÑе ÑкопиÑованнÑе ÑÑолбÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ NULL. ÐамеÑÑÑе, ÑÑо пÑи копиÑовании подобнÑÑ Ð²ÑÑажений, в коÑоÑÑÑ Ð²ÑзÑваÑÑÑÑ ÑÑнкÑии, модиÑиÑиÑÑÑÑие ÐÐ, напÑимеÑ
nextval, Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑазовÑваÑÑÑÑ ÑÑнкÑионалÑÐ½Ð°Ñ ÑвÑÐ·Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ñ Ð½Ð¾Ð²Ð¾Ð¹.INCLUDING GENERATEDÐопиÑоваÑÑ Ð²ÑÑажениÑ, генеÑиÑÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñе новÑе ÑÑолбÑÑ Ð±ÑдÑÑ Ð¾Ð±ÑÑнÑми базовÑми ÑÑолбÑами.
INCLUDING IDENTITYÐопиÑоваÑÑ Ñ Ð°ÑакÑеÑиÑÑики иденÑиÑикаÑии в опÑеделениÑÑ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа иденÑиÑикаÑии в новой ÑаблиÑе ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, не завиÑÑÑÐ°Ñ Ð¾Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей, ÑвÑзаннÑÑ Ñо ÑÑаÑой ÑаблиÑей.
INCLUDING INDEXESСоздаваÑÑ Ð² новой ÑаблиÑе индекÑÑ, огÑаниÑениÑ
PRIMARY KEY,UNIQUEиEXCLUDE, ÑÑÑеÑÑвÑÑÑие в иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе. Ðмена Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ Ð¸Ð½Ð´ÐµÐºÑов и огÑаниÑений вÑбиÑаÑÑÑÑ ÑоглаÑно ÑÑандаÑÑнÑм пÑавилам, незавиÑимо Ð¾Ñ Ñого, как назÑвалиÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñе. (ÐÑо позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾ÑенÑиалÑнÑÑ ÐºÐ¾Ð½ÑликÑов Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ новÑÑ Ð¸Ð½Ð´ÐµÐºÑов.)INCLUDING STATISTICSÐопиÑоваÑÑ Ð² новÑÑ ÑаблиÑÑ ÑаÑÑиÑеннÑÑ ÑÑаÑиÑÑикÑ.
INCLUDING STORAGEÐопиÑоваÑÑ Ð¿Ð°ÑамеÑÑÑ
STORAGEв опÑеделениÑÑ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑÑSTORAGEиÑклÑÑаÑÑÑÑ, вÑледÑÑвие Ñего ÑкопиÑованнÑе ÑÑолбÑÑ Ð² новой ÑаблиÑе полÑÑаÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ, опÑеделÑннÑе ÑооÑвеÑÑÑвÑÑÑим Ñипом. ÐодÑобнее паÑамеÑÑÑSTORAGEопиÑÐ°Ð½Ñ Ð² Разделе 70.2.INCLUDING ALLУказание
INCLUDING ALLÑвлÑеÑÑÑ ÑокÑаÑÑннÑм ваÑианÑом вÑбоÑа вÑÐµÑ Ð¸Ð¼ÐµÑÑÐ¸Ñ ÑÑ Ð¾ÑделÑнÑÑ Ð¿Ð°ÑамеÑÑов. (ÐоÑлеINCLUDING ALLможно дополниÑелÑно добавиÑÑ Ð¿ÑедложениÑEXCLUDING, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ð²Ñе паÑамеÑÑÑ, за иÑклÑÑением некоÑоÑÑÑ .)
ÐÑедложение
LIKEÐ¼Ð¾Ð¶ÐµÑ Ñакже пÑименÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñеделений ÑÑолбÑов из пÑедÑÑавлений, ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ ÑоÑÑавнÑÑ Ñипов. ÐепÑименимÑе паÑамеÑÑÑ (напÑимеÑ,INCLUDING INDEXESÐ´Ð»Ñ Ð¿ÑедÑÑавлениÑ) пÑи ÑÑом игноÑиÑÑÑÑÑÑ.CONSTRAINTимÑ_огÑаниÑениÑÐеобÑзаÑелÑное Ð¸Ð¼Ñ ÑÑолбÑа или огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑи наÑÑÑении огÑаниÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ Ð¸Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ Ð² ÑообÑении об оÑÐ¸Ð±ÐºÐ°Ñ , Ñак ÑÑо имена огÑаниÑений вида
ÑÑÐ¾Ð»Ð±ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑммогÑÑ ÑообÑиÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½ÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± огÑаниÑении клиенÑÑÐºÐ¾Ð¼Ñ Ð¿ÑиложениÑ. (Ðмена огÑаниÑений, вклÑÑаÑÑие пÑобелÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заклÑÑаÑÑ Ð² двойнÑе кавÑÑки.) ÐÑли Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ðµ Ñказано, ÑиÑÑема генеÑиÑÑÐµÑ Ð¸Ð¼Ñ Ð°Ð²ÑомаÑиÑеÑки.NOT NULLÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL.
NULLÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL (по ÑмолÑаниÑ).
ÐÑо пÑедложение пÑедназнаÑено ÑолÑко Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð½ÐµÑÑандаÑÑнÑми базами даннÑÑ SQL. ÐÑполÑзоваÑÑ ÐµÐ³Ð¾ в новÑÑ Ð¿ÑиложениÑÑ Ð½Ðµ ÑекомендÑеÑÑÑ.
CHECK (вÑÑажение) [ NO INHERIT ]РогÑаниÑении
CHECKзадаÑÑÑÑ Ð²ÑÑажение, возвÑаÑаÑÑее логиÑеÑкий ÑезÑлÑÑаÑ, по коÑоÑÐ¾Ð¼Ñ Ð¾Ð¿ÑеделÑеÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑпеÑна опеÑаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ ÑÑÑок. ÐпеÑаÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑÑпеÑно, еÑли ÑезÑлÑÑÐ°Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñавен TRUE или UNKNOWN. ÐÑли же Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð¹-нибÑÐ´Ñ ÑÑÑоки, задейÑÑвованной в опеÑаÑии Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ изменениÑ, бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен ÑезÑлÑÑÐ°Ñ FALSE, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка, и ÑÑа опеÑаÑÐ¸Ñ Ð½Ðµ менÑÐµÑ Ð½Ð¸Ñего в базе даннÑÑ . ÐгÑаниÑение-пÑовеÑка, заданное как огÑаниÑение ÑÑолбÑа, должно ÑÑÑлаÑÑÑÑ ÑолÑко на знаÑение Ñамого ÑÑолбÑа, Ñогда как огÑаниÑение на ÑÑовне ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ Ð¸ на неÑколÑко ÑÑолбÑов.РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÑÑажениÑ
CHECKне могÑÑ ÑодеÑжаÑÑ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑÑ Ð¸Ð»Ð¸ ÑÑÑлаÑÑÑÑ Ð½Ð° какие-либо пеÑеменнÑе, кÑоме как на ÑÑолбÑÑ ÑекÑÑей ÑÑÑоки (Ñм. ÐодÑаздел 5.4.1). Также допÑÑÑима ÑÑÑлка на ÑиÑÑемнÑй ÑÑолбеÑtableoid, но не на дÑÑгие ÑиÑÑемнÑе ÑÑолбÑÑ.ÐгÑаниÑение Ñ Ð¿Ð¾Ð¼ÐµÑкой
NO INHERITне бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð´Ð¾ÑеÑними ÑаблиÑами.Ðогда Ð´Ð»Ñ ÑаблиÑÑ Ð·Ð°Ð´Ð°Ð½Ð¾ неÑколÑко огÑаниÑений
CHECK, они бÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки в алÑавиÑном поÑÑдке имÑн поÑле пÑовеÑки огÑаниÑенийNOT NULL. (Ðо веÑÑии 9.5 в PostgreSQL не бÑло ÑÑÑановлено никакого опÑеделÑнного поÑÑдка обÑабоÑки огÑаниÑенийCHECK.)DEFAULTвÑÑажение_по_ÑмолÑаниÑÐÑедложение
DEFAULTзадаÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа, в опÑеделении коÑоÑого оно пÑиÑÑÑÑÑвÑеÑ. ÐнаÑение задаÑÑÑÑ Ð²ÑÑажением без пеÑеменнÑÑ (в ÑаÑÑноÑÑи, пеÑекÑÑÑÑнÑе ÑÑÑлки на дÑÑгие ÑÑолбÑÑ ÑекÑÑей ÑаблиÑÑ Ð² нÑм не допÑÑкаÑÑÑÑ). Также не допÑÑкаÑÑÑÑ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑÑ. Тип даннÑÑ Ð²ÑÑажениÑ, задаÑÑего знаÑение по ÑмолÑаниÑ, должен ÑооÑвеÑÑÑвоваÑÑ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑолбÑа.ÐÑо вÑÑажение бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð²Ð¾ вÑÐµÑ Ð¾Ð¿ÐµÑаÑиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , в коÑоÑÑÑ Ð½Ðµ задаÑÑÑÑ Ð·Ð½Ð°Ñение данного ÑÑолбÑа. ÐÑли знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ опÑеделено, Ñаким знаÑением бÑÐ´ÐµÑ NULL.
GENERATED ALWAYS AS (генеÑиÑÑÑÑее_вÑÑажение) STOREDÐÑо пÑедложение ÑоздаÑÑ ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ°Ðº генеÑиÑÑемÑй. Ð Ñакой ÑÑÐ¾Ð»Ð±ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð´Ð°Ð½Ð½Ñе, а пÑи ÑÑении его возвÑаÑаеÑÑÑ ÑезÑлÑÑÐ°Ñ Ñказанного вÑÑажениÑ.
ÐлÑÑевое Ñлово
STOREDоÑмеÑаеÑ, ÑÑо ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð±ÑÐ´ÐµÑ Ð²ÑÑиÑлÑÑÑÑÑ Ð¿Ñи запиÑи и ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½Ð° диÑке.ÐенеÑиÑÑÑÑее вÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº дÑÑгим ÑÑолбÑам ÑаблиÑÑ, но не к дÑÑгим генеÑиÑÑемÑм ÑÑолбÑам. ÐÑе ÑÑнкÑии и опеÑаÑоÑÑ Ð² нÑм Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾ÑÑоÑннÑми. ÐбÑаÑаÑÑÑÑ Ðº дÑÑгим ÑаблиÑам в ÑÐ°ÐºÐ¸Ñ Ð²ÑÑажениÑÑ Ð½ÐµÐ»ÑзÑ.
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ (паÑамеÑÑÑ_поÑледоваÑелÑноÑÑи) ]С ÑÑим пÑедложением ÑÑÐ¾Ð»Ð±ÐµÑ ÑоздаÑÑÑÑ ÐºÐ°Ðº ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑии. С ним бÑÐ´ÐµÑ ÑвÑзана неÑÐ²Ð½Ð°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, из коÑоÑой ÑÑÐ¾Ñ ÑÑÐ¾Ð»Ð±ÐµÑ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки полÑÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ ÑÑÑок. Ð¢Ð°ÐºÐ¾Ð¼Ñ ÑÑолбÑÑ Ð½ÐµÑвно назнаÑаеÑÑÑ ÑвойÑÑво
NOT NULL.ÐÑедложениÑ
ALWAYSиBY DEFAULTопÑеделÑÑÑ, как Ñвно заданнÑе полÑзоваÑелем знаÑÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸INSERTиUPDATE.Ркоманде
INSERT, в ÑлÑÑае вÑбоÑаALWAYS, полÑзоваÑелÑÑкое знаÑение иÑполÑзÑеÑÑÑ, ÑолÑко еÑли в ÑÑой команде ÑказаноOVERRIDING SYSTEM VALUE. С пÑедложениемBY DEFAULTполÑзоваÑелÑÑÐºÐ¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾ÑдаÑÑÑÑ Ð¿ÑедпоÑÑение. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ INSERT. (РкомандеCOPYполÑзоваÑелÑÑкие знаÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð²Ñегда, вне завиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного здеÑÑ Ð²Ð°ÑианÑа.)Ркоманде
UPDATE, в ÑлÑÑае вÑбоÑаALWAYS, попÑÑка помеÑÑиÑÑ Ð² ÑÑÐ¾Ð»Ð±ÐµÑ Ð»Ñбое знаÑение, оÑлиÑное оÑDEFAULT, бÑÐ´ÐµÑ Ð¾ÑвеÑгнÑÑа. ÐÑли вÑбÑан ваÑианÑBY DEFAULT, ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñн обÑÑнÑм обÑазом. (ÐÑедложениеOVERRIDINGÐ´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑUPDATEоÑÑÑÑÑÑвÑеÑ.)ÐÑполÑзÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑное пÑедложение
паÑамеÑÑÑ_поÑледоваÑелÑноÑÑи, можно пеÑеопÑеделиÑÑ ÑвойÑÑва поÑледоваÑелÑноÑÑи. СÑеди доÑÑÑпнÑÑ Ð¿Ð°ÑамеÑÑов: паÑамеÑÑÑ Ð´Ð»Ñ CREATE SEQUENCE, а ÑакжеSEQUENCE NAME,имÑLOGGEDиUNLOGGED. Ðни позволÑÑÑ Ð²ÑбÑаÑÑ Ð¸Ð¼Ñ Ð¸ Ñежим жÑÑналиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи. ÐезSEQUENCE NAMEÑиÑÑема пÑоÑÑÐ°Ð²Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи еÑÑ Ð½Ðµ иÑполÑзованное имÑ. ÐезLOGGEDилиUNLOGGEDÑ Ð¿Ð¾ÑледоваÑелÑноÑÑи бÑÐ´ÐµÑ ÑÐ¾Ñ Ð¶Ðµ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¶ÑÑналиÑованиÑ, ÑÑо и Ñ ÑаблиÑÑ.UNIQUE [ NULLS [ NOT ] DISTINCT ](огÑаниÑение ÑÑолбÑа)UNIQUE [ NULLS [ NOT ] DISTINCT ] ([имÑ_ÑÑолбÑа[, ... ] )INCLUDE (] (огÑаниÑение ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ...])ÐгÑаниÑение
UNIQUEопÑеделÑеÑ, ÑÑо гÑÑппа из одного или неÑколÑÐºÐ¸Ñ ÑÑолбÑов ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑолÑко ÑникалÑнÑе знаÑениÑ. ÐгÑаниÑение ÑникалÑноÑÑи Ð´Ð»Ñ ÑаблиÑÑ Ð²ÐµÐ´ÑÑ ÑÐµÐ±Ñ ÑоÑно Ñак же, как огÑаниÑение Ð´Ð»Ñ ÑÑолбÑа, но Ð¼Ð¾Ð¶ÐµÑ Ð¾Ñ Ð²Ð°ÑÑваÑÑ Ð½ÐµÑколÑко ÑÑолбÑов. Таким обÑазом, огÑаниÑение ÑникалÑноÑÑи гаÑанÑиÑÑеÑ, ÑÑо лÑбÑе две ÑÑÑоки ÑаблиÑÑ ÑазлиÑаÑÑÑÑ ÐºÐ°Ðº минимÑм в ÑÑÐ¸Ñ ÑÑолбÑÐ°Ñ .ÐÑи пÑовеÑке огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи знаÑÐµÐ½Ð¸Ñ NULL не ÑÑиÑаÑÑÑÑ ÑавнÑми, еÑли не Ñказан паÑамеÑÑ
NULLS NOT DISTINCT.Ркаждом огÑаниÑении ÑникалÑноÑÑи должен задаваÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, оÑлиÑнÑй Ð¾Ñ Ð½Ð°Ð±Ð¾Ñа лÑбого дÑÑгого огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи или пеÑвиÑного клÑÑа в данной ÑаблиÑе. (ÐзбÑÑоÑнÑе огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи бÑдÑÑ Ð¿ÑоÑÑо игноÑиÑоваÑÑÑÑ.)
ÐÑи ÑÑÑановлении огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи в многоÑÑовневой иеÑаÑÑ Ð¸Ð¸ ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² опÑеделение огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÐºÐ»ÑÑаÑÑÑÑ Ð²Ñе ÑÑолбÑÑ ÐºÐ»ÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñелевой ÑекÑиониÑованной ÑаблиÑÑ, а Ñакже ÑÑолбÑÑ Ð²ÑÐµÑ Ð¿Ð¾Ð´ÑинÑннÑÑ ÑекÑиониÑованнÑÑ ÑаблиÑ.
ÐÑи добавлении огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи авÑомаÑиÑеÑки бÑÐ´ÐµÑ Ñоздан ÑникалÑнÑй индекÑ-B-деÑево по ÑÑолбÑÑ Ð¸Ð»Ð¸ гÑÑппе ÑÑолбÑов, пеÑеÑиÑленнÑÑ Ð² огÑаниÑении.
ÐеобÑзаÑелÑное пÑедложение
INCLUDEдобавлÑÐµÑ Ðº ÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко ÑÑолбÑов, ÑоÑÑавлÑÑÑÐ¸Ñ Ð¿ÑоÑÑо «дополниÑелÑнÑÑ Ð½Ð°Ð³ÑÑзкÑ»: Ð´Ð»Ñ Ð½Ð¸Ñ ÑникалÑноÑÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑÑебоваÑÑÑÑ, и иÑкаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² Ð½Ð¸Ñ Ð¿Ð¾ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð½ÐµÐ»ÑзÑ. Ðднако Ð¸Ñ ÑодеÑжимое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑено пÑи ÑканиÑовании ÑолÑко индекÑа. ÐамеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ Ð¾Ð³ÑаниÑение по неклÑÑевÑм ÑÑолбÑам не конÑÑолиÑÑеÑÑÑ, оно вÑÑ Ð¶Ðµ завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ñ . Ðак ÑледÑÑвие, некоÑоÑÑе опеÑаÑии Ñ ÑÑими ÑÑолбÑами (напÑимеÑ,DROP COLUMN) могÑÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ ÐºÐ°Ñкадное Ñдаление индекÑа и огÑаниÑениÑ.PRIMARY KEY(огÑаниÑение ÑÑолбÑа)PRIMARY KEY ([имÑ_ÑÑолбÑа[, ... ] )INCLUDE (] (огÑаниÑение ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ...])ÐгÑаниÑение
PRIMARY KEYопÑеделÑеÑ, ÑÑо ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð»Ð¸ ÑÑолбÑÑ ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ ÑолÑко ÑникалÑнÑе (без повÑоÑений) знаÑениÑ, оÑлиÑнÑе Ð¾Ñ NULL. ÐÐ»Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½ ÑолÑко один пеÑвиÑнÑй клÑÑ, бÑÐ´Ñ Ñо огÑаниÑение ÑÑолбÑа или огÑаниÑение ÑаблиÑÑ.РопÑеделении пеÑвиÑного клÑÑа должен задаваÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов, оÑлиÑнÑй Ð¾Ñ Ð½Ð°Ð±Ð¾Ñа лÑбого дÑÑгого огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи, ÑÑÑановленного Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ. (РпÑоÑивном ÑлÑÑае ÑникалÑное огÑаниÑение оказÑваеÑÑÑ Ð¸Ð·Ð±ÑÑоÑнÑм и бÑÐ´ÐµÑ Ð¾ÑбÑоÑено.)
PRIMARY KEYÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Ñе же огÑаниÑениÑ, ÑÑо и ÑоÑеÑаниеUNIQUEиNOT NULL, но ÑозданнÑй по набоÑÑ ÑÑолбÑов пеÑвиÑнÑй клÑÑ Ñакже даÑÑ Ð¼ÐµÑаинÑоÑмаÑÐ¸Ñ Ð¾ конÑÑÑÑкÑии ÑÑ ÐµÐ¼Ñ, Ñак как он подÑазÑмеваеÑ, ÑÑо дÑÑгие ÑаблиÑÑ Ð¼Ð¾Ð³ÑÑ ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑÐ¾Ñ Ð½Ð°Ð±Ð¾Ñ ÑÑолбÑов как на ÑникалÑнÑй иденÑиÑикаÑÐ¾Ñ ÑÑÑок.ÐпÑеделÑемÑе Ð´Ð»Ñ ÑекÑиониÑованной ÑаблиÑÑ Ð¾Ð³ÑаниÑениÑ
PRIMARY KEYподÑинÑÑÑÑÑ Ñем же ÑÑебованиÑм, ÑÑо и огÑаниÑениÑUNIQUE.ÐÑи добавлении огÑаниÑениÑ
PRIMARY KEYавÑомаÑиÑеÑки бÑÐ´ÐµÑ Ñоздан ÑникалÑнÑй индекÑ-B-деÑево по ÑÑолбÑÑ Ð¸Ð»Ð¸ гÑÑппе ÑÑолбÑов, пеÑеÑиÑленнÑÑ Ð² огÑаниÑении.ÐеобÑзаÑелÑное пÑедложение
INCLUDEдобавлÑÐµÑ Ðº ÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко ÑÑолбÑов, ÑоÑÑавлÑÑÑÐ¸Ñ Ð¿ÑоÑÑо «дополниÑелÑнÑÑ Ð½Ð°Ð³ÑÑзкÑ»: Ð´Ð»Ñ Ð½Ð¸Ñ ÑникалÑноÑÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑÑебоваÑÑÑÑ, и иÑкаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² Ð½Ð¸Ñ Ð¿Ð¾ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð½ÐµÐ»ÑзÑ. Ðднако Ð¸Ñ ÑодеÑжимое Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑено пÑи ÑканиÑовании ÑолÑко индекÑа. ÐамеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ Ð¾Ð³ÑаниÑение по неклÑÑевÑм ÑÑолбÑам не конÑÑолиÑÑеÑÑÑ, оно вÑÑ Ð¶Ðµ завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ñ . Ðак ÑледÑÑвие, некоÑоÑÑе опеÑаÑии Ñ ÑÑими ÑÑолбÑами (напÑимеÑ,DROP COLUMN) могÑÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ ÐºÐ°Ñкадное Ñдаление индекÑа и огÑаниÑениÑ.EXCLUDE [ USINGиндекÑнÑй_меÑод] (ÑлеменÑ_иÑклÑÑениÑWITHопеÑаÑоÑ[, ... ] )паÑамеÑÑÑ_индекÑа[ WHERE (пÑедикаÑ) ]ÐÑедложение
EXCLUDEопÑеделÑÐµÑ Ð¾Ð³ÑаниÑение-иÑклÑÑение, коÑоÑое гаÑанÑиÑÑеÑ, ÑÑо Ð´Ð»Ñ Ð»ÑбÑÑ Ð´Ð²ÑÑ ÑÑÑок, ÑÑавниваемÑÑ Ð¿Ð¾ ÑказаннÑм ÑÑолбÑам или вÑÑажениÑм Ñ ÑказаннÑми опеÑаÑоÑами, ÑезÑлÑÑÐ°Ñ Ð½Ðµ бÑÐ´ÐµÑ ÑавенTRUEÐ´Ð»Ñ Ð²ÑÐµÑ ÑÑавнений. ÐÑли вÑе ÑказаннÑе опеÑаÑоÑÑ Ð¿ÑовеÑÑÑÑ ÑавенÑÑво, ÑÑо огÑаниÑение ÑавноÑилÑно огÑаниÑениÑUNIQUE, Ñ Ð¾ÑÑ Ð¾Ð±ÑÑное огÑаниÑение ÑникалÑноÑÑи бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð±ÑÑÑÑее. С дÑÑгой ÑÑоÑонÑ, в огÑаниÑениÑÑ -иÑклÑÑениÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаваÑÑ Ð±Ð¾Ð»ÐµÐµ обÑие ÑÑловиÑ, Ñем пÑоÑÑое ÑÑловие на ÑавенÑÑво. ÐапÑимеÑ, можно задаÑÑ Ð¾Ð³ÑаниÑение, ÑÑебÑÑÑее, ÑÑÐ¾Ð±Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ две ÑÑÑоки в ÑаблиÑе не ÑодеÑжали пеÑеÑекаÑÑÐ¸Ñ ÑÑ ÐºÑÑгов (Ñм. Раздел 8.8), пÑименив опеÑаÑоÑ&&. ÐÑоме Ñого, опеÑаÑоÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÐºÐ¾Ð¼Ð¼ÑÑаÑивнÑми.ÐгÑаниÑениÑ-иÑклÑÑÐµÐ½Ð¸Ñ ÑеализÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð½Ð´ÐµÐºÑов, Ñак ÑÑо каждÑй ÑказаннÑй в Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑвÑзан Ñ ÑооÑвеÑÑÑвÑÑÑим клаÑÑом опеÑаÑоÑов (Ñм. Раздел 11.10) длÑ
индекÑного_меÑода. РкаждомÑлеменÑе_иÑклÑÑениÑможно дополниÑелÑно ÑказаÑÑ ÐºÐ»Ð°ÑÑ Ð¾Ð¿ÐµÑаÑоÑа и/или паÑамеÑÑÑ ÑоÑÑиÑовки, подÑобно опиÑаннÑе в CREATE INDEX.ÐндекÑнÑй меÑод доÑÑÑпа должен поддеÑживаÑÑ
amgettuple(Ñм. ÐлавÑ 61); в наÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо ознаÑаеÑ, ÑÑо индекÑÑ GIN Ð´Ð»Ñ ÑÑого не Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ. ХоÑÑ Ð² огÑаниÑении-иÑклÑÑении можно иÑполÑзоваÑÑ B-деÑевÑÑ Ð¸ Ñ ÐµÑ-индекÑÑ, в ÑÑом мало ÑмÑÑла, Ñак как Ñакой Ð¿Ð¾Ð´Ñ Ð¾Ð´ ниÑем не лÑÑÑе обÑÑного огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи. Так ÑÑо на пÑакÑике меÑодом доÑÑÑпа вÑегда бÑÐ´ÐµÑ GiST или SP-GiST.ÐаÑамеÑÑ
пÑедикаÑпозволÑÐµÑ ÑказаÑÑ Ð¾Ð³ÑаниÑение-иÑклÑÑение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑва ÑаблиÑÑ; внÑÑÑи пÑи ÑÑом ÑоздаÑÑÑÑ ÑаÑÑиÑнÑй индекÑ. ÐамеÑÑÑе, ÑÑо пÑÐµÐ´Ð¸ÐºÐ°Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заклÑÑиÑÑ Ð² Ñкобки.REFERENCES(огÑаниÑение ÑÑолбÑа)внеÑнÑÑ_ÑаблиÑа[ (внеÑний_ÑÑолбеÑ) ] [ MATCHÑип_ÑовпадениÑ] [ ON DELETEÑÑÑлоÑное_дейÑÑвие] [ ON UPDATEÑÑÑлоÑное_дейÑÑвие]FOREIGN KEY ((огÑаниÑение ÑаблиÑÑ)имÑ_ÑÑолбÑа[, ... ] ) REFERENCESвнеÑнÑÑ_ÑаблиÑа[ (внеÑний_ÑÑолбеÑ[, ... ] ) ] [ MATCHÑип_ÑовпадениÑ] [ ON DELETEÑÑÑлоÑное_дейÑÑвие] [ ON UPDATEÑÑÑлоÑное_дейÑÑвие]ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ Ð¾Ð³ÑаниÑение внеÑнего клÑÑа, ÑÑебÑÑÑее, ÑÑÐ¾Ð±Ñ Ð³ÑÑппа из одного или неÑколÑÐºÐ¸Ñ ÑÑолбÑов новой ÑаблиÑÑ ÑодеÑжала ÑолÑко Ñакие знаÑениÑ, коÑоÑÑм ÑооÑвеÑÑÑвÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² заданнÑÑ ÑÑолбÑÐ°Ñ Ð½ÐµÐºÐ¾ÑоÑой ÑÑÑоки во внеÑней ÑаблиÑе. ÐÑли ÑпиÑок
ÑелевÑÑ _ÑÑолбÑовопÑÑен, в каÑеÑÑве него иÑполÑзÑеÑÑÑ Ð¿ÐµÑвиÑнÑй клÑÑÑелевой_ÑаблиÑÑ. ÐÑли же он задан, в каÑеÑÑве ÑелевÑÑ ÑÑолбÑов Ð´Ð¾Ð»Ð¶Ð½Ñ ÑказÑваÑÑÑÑ ÑÑолбÑÑ Ð½ÐµÐ¾ÑкладÑваемого ÑникалÑного огÑаниÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ пеÑвиÑного клÑÑа во внеÑней ÑаблиÑе, либо ÑÑолбÑÑ Ð½ÐµÑаÑÑиÑного ÑникалÑного индекÑа. ÐÑи ÑÑом полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ð¿ÑавоREFERENCESво внеÑней ÑаблиÑе (либо Ð´Ð»Ñ Ð²Ñей ÑаблиÑÑ, либо ÑолÑко Ð´Ð»Ñ ÑелевÑÑ ÑÑолбÑов). ÐÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа ÑÑебÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкаSHARE ROW EXCLUSIVEв Ñелевой ÑаблиÑе. ÐбÑаÑиÑе внимание, ÑÑо нелÑÐ·Ñ Ð¾Ð¿ÑеделиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа, ÑвÑзÑваÑÑие вÑеменнÑе и поÑÑоÑннÑе ÑаблиÑÑ.ÐнаÑениÑ, вÑÑавлÑемÑе в ÑÑÑлаÑÑиеÑÑ ÑÑолбÑÑ, ÑвеÑÑÑÑÑÑ Ñо знаÑениÑми во внеÑÐ½Ð¸Ñ ÑÑолбÑÐ°Ñ Ð²Ð½ÐµÑней ÑаблиÑÑ Ñ ÑÑÑÑом заданного Ñипа ÑовпадениÑ. ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑÑи Ñипа ÑовпадениÑ:
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. ÐодмножеÑÑво ÑÑолбÑов можно ÑказаÑÑ ÑолÑко Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвий
ON DELETE.SET DEFAULT [ (имÑ_ÑÑолбÑа[, ... ] ) ]УÑÑановиÑÑ Ð²Ð¾ вÑÐµÑ ÑÑÑлаÑÑÐ¸Ñ ÑÑ ÑÑолбÑÐ°Ñ Ð¸Ð»Ð¸ в Ñказанном подмножеÑÑве ÑÑÑлаÑÑÐ¸Ñ ÑÑ ÑÑолбÑов знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐодмножеÑÑво ÑÑолбÑов можно ÑказаÑÑ ÑолÑко Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвий
ON DELETE. (ÐÑли знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑлиÑÐ½Ñ Ð¾Ñ 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.USINGмеÑодÐÑо дополниÑелÑное пÑедложение задаÑÑ ÑаблиÑнÑй меÑод доÑÑÑпа, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑодеÑжимого новой ÑаблиÑÑ; Ñипом ÑÑого меÑода доÑÑÑпа должен бÑÑÑ
TABLE. ÐодÑобнее об ÑÑом ÑаÑÑказÑваеÑÑÑ Ð² Ðлаве 60. Ð ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑаблиÑÑ Ð²ÑбиÑаеÑÑÑ Ð¼ÐµÑод доÑÑÑпа по ÑмолÑаниÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº default_table_access_method.WITH (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] )ÐÑо пÑедложение опÑеделÑÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе паÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑа; за подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÑÐ°Ð·Ð´ÐµÐ»Ñ ÐаÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½Ð¸Ð¶Ðµ. Ð ÑелÑÑ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи пÑедложение
WITHÐ´Ð»Ñ ÑаблиÑÑ Ñакже Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑказаниеOIDS=FALSE, оÑмеÑаÑÑее, ÑÑо ÑÑÑоки новой ÑаблиÑÑ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑодеÑжаÑÑ OID (иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа); ÑказаниеOIDS=TRUEболее не поддеÑживаеÑÑÑWITHOUT OIDSÐбеÑпеÑиваÑÑий обÑаÑнÑÑ ÑовмеÑÑимоÑÑÑ ÑинÑакÑÐ¸Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑаблиÑÑ Ñ Ñ Ð°ÑакÑеÑиÑÑикой
WITHOUT OIDS; Ñоздание ÑаблиÑÑ Ñ ÑказаниемWITH OIDSболее не поддеÑживаеÑÑÑ.ON COMMITÐоведением вÑеменнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð² конÑе блока ÑÑанзакÑии позволÑÐµÑ ÑпÑавлÑÑÑ Ð¿Ñедложение
ON COMMIT, коÑоÑое пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи паÑамеÑÑа:PRESERVE ROWSÐикакое ÑпеÑиалÑное дейÑÑвие в конÑе ÑÑанзакÑии не вÑполнÑеÑÑÑ. ÐÑо поведение по ÑмолÑаниÑ.
DELETE ROWSÐÑе ÑÑÑоки в ÑÑой вÑеменной ÑаблиÑе бÑдÑÑ ÑдалÑÑÑÑÑ Ð² конÑе каждого блока ÑÑанзакÑии. Ðо ÑÑÑи, пÑи каждой ÑикÑаÑии ÑÑанзакÑии бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑполнÑÑÑÑÑ
TRUNCATE. Ð ÑлÑÑае ÑекÑиониÑованной ÑаблиÑÑ ÑÑо дейÑÑвие не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° ÐµÑ ÑекÑии.DROPÐÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ñдалена в конÑе ÑекÑÑего блока ÑÑанзакÑии. ÐÑли ÑÑо ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа, бÑдÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸ вÑе ÐµÑ ÑекÑии. ÐÑли Ñ ÑаблиÑÑ ÐµÑÑÑ Ð¿Ð¾Ñомки в иеÑаÑÑ Ð¸Ð¸ наÑледованиÑ, они Ñакже бÑдÑÑ ÑдаленÑ.
TABLESPACEÑабл_пÑоÑÑÑанÑÑвоÐдеÑÑ
Ñабл_пÑоÑÑÑанÑÑвоâ Ð¸Ð¼Ñ ÑаблиÑного пÑоÑÑÑанÑÑва, в коÑоÑом бÑÐ´ÐµÑ ÑоздаваÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑаблиÑа. ÐÑли оно не Ñказано, вÑбиÑаеÑÑÑ default_tablespace Ð´Ð»Ñ Ð¾Ð±ÑÑнÑÑ Ð¸Ð»Ð¸ temp_tablespaces Ð´Ð»Ñ Ð²ÑеменнÑÑ ÑаблиÑ. ÐÑли же ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð´Ð»Ñ ÑекÑиониÑÑемой ÑаблиÑÑ, Ñо Ð²Ð²Ð¸Ð´Ñ Ñого, ÑÑо ей Ñамой ÑаблиÑное пÑоÑÑÑанÑÑво не ÑÑебÑеÑÑÑ, заданное Ð¸Ð¼Ñ Ð¿ÐµÑеопÑеделÑÐµÑ Ð·Ð½Ð°Ñениеdefault_tablespace(ÑаблиÑное пÑоÑÑÑанÑÑво по ÑмолÑаниÑ), коÑоÑое пÑименÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ ÑоздаваемÑÑ ÑекÑий в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñвного ÑказаниÑ.USING INDEX TABLESPACEÑабл_пÑоÑÑÑанÑÑвоÐÑо пÑедложение позволÑÐµÑ Ð²ÑбÑаÑÑ ÑаблиÑное пÑоÑÑÑанÑÑво, в коÑоÑом бÑдÑÑ ÑоздаваÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ, ÑвÑзаннÑе Ñ Ð¾Ð³ÑаниÑениÑми
UNIQUE,PRIMARY KEYилиEXCLUDE. ÐÑли оно не Ñказано, вÑбиÑаеÑÑÑ default_tablespace или temp_tablespaces, еÑли ÑаблиÑа вÑеменнаÑ.
ÐаÑамеÑÑÑ Ñ ÑанениÑ
ÐÑедложение WITH позволÑÐµÑ ÑÑÑановиÑÑ Ð¿Ð°ÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов, ÑвÑзаннÑÑ
Ñ Ð¾Ð³ÑаниÑениÑми UNIQUE, PRIMARY KEY и EXCLUDE. ÐаÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов докÑменÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² CREATE INDEX. ÐоддеÑживаемÑе в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð½Ð¸Ð¶Ðµ. Ðак показано, Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
паÑамеÑÑов ÑÑÑеÑÑвÑÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй паÑамеÑÑ Ñ Ñем же именем и пÑеÑикÑом toast., коÑоÑÑй ÑпÑавлÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ вÑоÑиÑной ÑаблиÑÑ TOAST, еÑли она еÑÑÑ (за дополниÑелÑнÑми ÑведениÑми о TOAST обÑаÑиÑеÑÑ Ðº РазделÑ 70.2). ÐÑли знаÑение некоÑоÑого паÑамеÑÑа задано Ð´Ð»Ñ ÑаблиÑÑ, а знаÑение ÑавнознаÑного паÑамеÑÑа toast. не опÑеделено, Ð´Ð»Ñ ÑаблиÑÑ TOAST бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð·Ð½Ð°Ñение паÑамеÑÑа оÑновной ÑаблиÑÑ. ÐозможноÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑÑиÑ
паÑамеÑÑов Ð´Ð»Ñ ÑекÑиониÑованнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð½Ðµ поддеÑживаеÑÑÑ, но Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе задаÑÑ Ð¸Ñ
Ð´Ð»Ñ Ð¾ÑделÑнÑÑ
конеÑнÑÑ
ÑекÑий.
fillfactor(integer)ФакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑаблиÑÑ, задаваемÑй в пÑоÑенÑÐ°Ñ , Ð¾Ñ 10 до 100. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 100 (плоÑное заполнение). ÐÑи менÑÑем ÑакÑоÑе Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑии
INSERTÑпаковÑваÑÑ Ð´Ð°Ð½Ð½Ñе в ÑÑÑаниÑÑ ÑолÑко до заданного пÑоÑенÑа; оÑÑавÑееÑÑ Ð¼ÐµÑÑо ÑезеÑвиÑÑеÑÑÑ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑок на ÑÑой ÑÑÑаниÑе. Ð ÑезÑлÑÑаÑеUPDATEполÑÑÐ°ÐµÑ ÑÐ°Ð½Ñ Ð¿Ð¾Ð¼ÐµÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑннÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÑÑÑоки в ÑÑ Ð¶Ðµ ÑÑÑаниÑÑ, ÑÑо и иÑÑ Ð¾Ð´Ð½ÑÑ, ÑÑо гоÑаздо ÑÑÑекÑивнее, Ñем ÑазмеÑаÑÑ ÐµÑ Ð½Ð° дÑÑгой ÑÑÑаниÑе, и ÑвелиÑÐ¸Ð²Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи Ð´Ð»Ñ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ по ÑÑ ÐµÐ¼Ðµ коÑÑежи ÑолÑко в кÑÑе. ÐÐ»Ñ ÑаблиÑ, запиÑи в коÑоÑÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не менÑÑÑÑÑ, лÑÑÑим вÑбоÑом бÑÐ´ÐµÑ Ð¿Ð»Ð¾Ñное заполнение, но Ð´Ð»Ñ Ð°ÐºÑивно изменÑемÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð»ÑÑÑе вÑбÑаÑÑ Ð¼ÐµÐ½ÑÑий ÑакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð·Ð°Ð´Ð°ÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ TOAST.toast_tuple_target(integer)ÐаÑамеÑÑ toast_tuple_target задаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑÑ Ð´Ð»Ð¸Ð½Ñ ÐºÐ¾ÑÑежа, поÑле пÑевÑÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑой Ð¼Ñ Ð±Ñдем пÑÑаÑÑÑÑ ÑжимаÑÑ Ð¸/или пеÑеноÑиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ ÑÑолбÑов в ÑаблиÑÑ TOAST и до коÑоÑой Ð¼Ñ Ð±Ñдем пÑÑаÑÑÑÑ ÑокÑаÑиÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑÑежа поÑле пеÑÐµÑ Ð¾Ð´Ð° к TOAST. ÐÑо заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ ÑÑолбÑÑ Ñ Ð¿Ð¾Ð¼ÐµÑкой External (внеÑние, коÑоÑÑе могÑÑ Ð¿ÐµÑеноÑиÑÑÑÑ), Main (оÑновнÑе, коÑоÑÑе могÑÑ ÑжимаÑÑÑÑ) или Extended (ÑаÑÑиÑеннÑе, коÑоÑÑе могÑÑ Ð¸ ÑжимаÑÑÑÑ, и пÑоÑÑо пеÑеноÑиÑÑÑÑ) и каÑаеÑÑÑ ÑолÑко новÑÑ ÐºÐ¾ÑÑежей. Ðа ÑÑÑеÑÑвÑÑÑие коÑÑежи ÑÑо не влиÑеÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение, позволÑÑÑее ÑазмеÑÑиÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ñм 4 коÑÑежа в блоке, ÑÑо пÑи ÑÑандаÑÑном ÑазмеÑе блока ÑоÑÑавлÑÐµÑ 2040 байÑ. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 128 Ð±Ð°Ð¹Ñ Ð´Ð¾ (ÑазмеÑ_блока - заголовок), по ÑмолÑÐ°Ð½Ð¸Ñ 8160 байÑ. Ðзменение ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ оÑÑажаÑÑÑÑ Ð½Ð° оÑÐµÐ½Ñ ÐºÐ¾ÑоÑÐºÐ¸Ñ Ð¸ оÑÐµÐ½Ñ Ð´Ð»Ð¸Ð½Ð½ÑÑ ÐºÐ¾ÑÑÐµÐ¶Ð°Ñ . ÐамеÑÑÑе, ÑÑо вÑбÑанное по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение ÑаÑÑо близко к опÑималÑномÑ, и веÑÑма веÑоÑÑно, ÑÑо изменение ÑÑого паÑамеÑÑа в некоÑоÑÑÑ ÑлÑÑаÑÑ Ð±ÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¾ÑÑиÑаÑелÑнÑй ÑÑÑекÑ. ÐÐ»Ñ ÑÐ°Ð±Ð»Ð¸Ñ TOAST ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð½ÐµÐ»ÑзÑ.
parallel_workers(integer)ÐаннÑй паÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑÑÑ Ð¿Ñи паÑаллелÑном ÑканиÑовании ÑаблиÑÑ. ÐÑли ÑÑо знаÑение не задано, ÑиÑÑема бÑÐ´ÐµÑ Ð¾Ð¿ÑеделÑÑÑ ÐµÐ³Ð¾, иÑÑ Ð¾Ð´Ñ Ð¸Ð· ÑазмеÑа оÑноÑениÑ. ФакÑиÑеÑкое ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, вÑбÑанное планиÑовÑиком или ÑлÑжебнÑми опеÑаÑоÑами, вÑполнÑÑÑими паÑаллелÑное ÑканиÑование, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ½ÑÑе, напÑимеÑ, вÑледÑÑвие огÑаниÑÐµÐ½Ð¸Ñ max_worker_processes.
autovacuum_enabled,toast.autovacuum_enabled(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ авÑооÑиÑÑки Ð´Ð»Ñ Ð¾Ð¿ÑеделÑнной ÑаблиÑÑ. Со знаÑением true демон авÑооÑиÑÑки бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑполнÑÑÑ Ð¾Ð¿ÐµÑаÑии
VACUUMи/илиANALYZEв ÑÑой ÑаблиÑе, ÑоглаÑно пÑавилам, опиÑаннÑм в ÐодÑазделе 23.1.6. Со знаÑением false ÑÑа ÑаблиÑа не бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ð²ÐµÑгаÑÑÑÑ Ð°Ð²ÑооÑиÑÑке, еÑли ÑолÑко ÑÑо не поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий. Ðолее подÑобно пÑедоÑвÑаÑение заÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸ÑÑваеÑÑÑ Ð² ÐодÑазделе 23.1.5. ÐамеÑÑÑе, ÑÑо демон авÑооÑиÑÑки не бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð²Ð¾Ð²Ñе (еÑли ÑолÑко ÑÑо не поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ), еÑли паÑамеÑÑ autovacuum Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение false; ÑÑо нелÑÐ·Ñ Ð¿ÐµÑеопÑеделиÑÑ, ÑÑÑановив паÑамеÑÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ. Таким обÑазом, Ñвно ÑÑÑанавливаÑÑ Ð´Ð»Ñ ÑÑого паÑамеÑÑа знаÑениеtrueпÑакÑиÑеÑки не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла â полезно ÑолÑко знаÑениеfalse.vacuum_index_cleanup,toast.vacuum_index_cleanup(enum)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¾ÑиÑÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑа пÑи вÑполнении в ÑÑой ÑаблиÑе опеÑаÑии
VACUUM. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âAUTO. ÐнаÑениеOFFоÑклÑÑаÑÑ Ð¾ÑиÑÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑа,ONâ вклÑÑаеÑ, а Ñо знаÑениемAUTOÑеÑение об оÑиÑÑке пÑинимаеÑÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки пÑи каждом вÑполненииVACUUM. ÐинамиÑеÑкий вÑÐ±Ð¾Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð²Ð¾ вÑемÑVACUUMненÑжного ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов, в ÑезÑлÑÑаÑе коÑоÑого ÑдалÑÑÑÑÑ Ð»Ð¸ÑÑ Ð½ÐµÑколÑко мÑÑÑвÑÑ ÐºÐ¾ÑÑежей. ÐÑинÑдиÑелÑное безÑÑловное оÑклÑÑение оÑиÑÑки индекÑов Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÐµÐ½Ñ ÑÑÑеÑÑвенно ÑÑкоÑиÑÑVACUUM, но Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к знаÑиÑелÑÐ½Ð¾Ð¼Ñ ÑаздÑÐ²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов пÑи ÑаÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑаблиÑе. ÐÑли Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑVACUUMзадаÑÑÑÑ Ð¿Ð°ÑамеÑÑINDEX_CLEANUP, он пеÑеопÑеделÑÐµÑ Ð·Ð½Ð°Ñениеvacuum_index_cleanup.vacuum_truncate,toast.vacuum_truncate(boolean)ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¿ÑоÑедÑÑÑ Ð¾ÑÑеÑÐµÐ½Ð¸Ñ Ð¿ÑÑÑÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð² конÑе ÑаблиÑÑ Ð² пÑоÑеÑÑе оÑиÑÑки. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
true(вкл.). Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн, опеÑаÑииVACUUMи авÑооÑиÑÑка пÑÑаÑÑÑÑ Ð¾ÑÑеÑÑ Ð¿ÑÑÑÑе ÑÑÑаниÑÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑвободивÑееÑÑ Ð¼ÐµÑÑо возвÑаÑилоÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑеме. ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ ÑÑого оÑÑеÑÐµÐ½Ð¸Ñ ÑÑебÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка ÑаблиÑÑ Ð½Ð° ÑÑовнеACCESS EXCLUSIVE. Явно заданнÑй паÑамеÑÑTRUNCATEкомандÑVACUUMпеÑеопÑеделÑÐµÑ Ð·Ð½Ð°Ñение данного паÑамеÑÑа.autovacuum_vacuum_threshold,toast.autovacuum_vacuum_threshold(integer)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_threshold Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_scale_factor,toast.autovacuum_vacuum_scale_factor(floating point)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_scale_factor Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_insert_threshold,toast.autovacuum_vacuum_insert_threshold(integer)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_insert_threshold Ð´Ð»Ñ ÑаблиÑÑ. ÐÑобое знаÑение -1 оÑклÑÑÐ°ÐµÑ Ð¾ÑиÑÑкÑ, вÑзÑваемÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ даннÑÑ .
autovacuum_vacuum_insert_scale_factor,toast.autovacuum_vacuum_insert_scale_factor(floating point)ÐнаÑение паÑамеÑÑа autovacuum_vacuum_insert_scale_factor Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_analyze_threshold(integer)ÐнаÑение паÑамеÑÑа autovacuum_analyze_threshold Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_analyze_scale_factor(floating point)ÐнаÑение паÑамеÑÑа autovacuum_analyze_scale_factor Ð´Ð»Ñ ÑаблиÑÑ.
autovacuum_vacuum_cost_delay,toast.autovacuum_vacuum_cost_delay(floating point)ÐнаÑение паÑамеÑÑа 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)ÐбÑÑвлÑÐµÑ ÑаблиÑÑ ÐºÐ°Ðº дополниÑелÑнÑÑ ÑаблиÑÑ ÐºÐ°Ñалога, напÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Ñелей логиÑеÑкой ÑепликаÑии. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 48.6.2. ÐÐ»Ñ ÑÐ°Ð±Ð»Ð¸Ñ TOAST ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð½ÐµÐ»ÑзÑ.
ÐÑимеÑаниÑ
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 GENERATED BY DEFAULT AS IDENTITY,
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 measurement (
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);Создание ÑаблиÑÑ, ÑекÑиониÑÑемой по диапазонам, Ñ ÐºÐ»ÑÑом ÑекÑиониÑованиÑ, вклÑÑаÑÑим неÑколÑко ÑÑолбÑов:
CREATE TABLE measurement_year_month (
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (EXTRACT(YEAR FROM logdate), EXTRACT(MONTH FROM logdate));Создание ÑаблиÑÑ, ÑекÑиониÑÑемой по ÑпиÑкам:
CREATE TABLE cities (
city_id bigserial not null,
name text not null,
population bigint
) PARTITION BY LIST (left(lower(name), 1));Создание ÑаблиÑÑ, ÑекÑиониÑÑемой по Ñ ÐµÑÑ:
CREATE TABLE orders (
order_id bigint not null,
cust_id bigint not null,
status text
) PARTITION BY HASH (order_id);Создание ÑекÑии ÑаблиÑÑ, ÑекÑиониÑÑемой по диапазонам:
CREATE TABLE measurement_y2016m07
PARTITION OF measurement (
unitsales DEFAULT 0
) FOR VALUES FROM ('2016-07-01') TO ('2016-08-01');Создание неÑколÑÐºÐ¸Ñ ÑекÑий Ð´Ð»Ñ ÑаблиÑÑ, ÑекÑиониÑÑемой по диапазонам, Ñ ÐºÐ»ÑÑом ÑекÑиониÑованиÑ, вклÑÑаÑÑим неÑколÑко ÑÑолбÑов:
CREATE TABLE measurement_ym_older
PARTITION OF measurement_year_month
FOR VALUES FROM (MINVALUE, MINVALUE) TO (2016, 11);
CREATE TABLE measurement_ym_y2016m11
PARTITION OF measurement_year_month
FOR VALUES FROM (2016, 11) TO (2016, 12);
CREATE TABLE measurement_ym_y2016m12
PARTITION OF measurement_year_month
FOR VALUES FROM (2016, 12) TO (2017, 01);
CREATE TABLE measurement_ym_y2017m01
PARTITION OF measurement_year_month
FOR VALUES FROM (2017, 01) TO (2017, 02);Создание ÑекÑии ÑаблиÑÑ, ÑекÑиониÑÑемой по ÑпиÑкам:
CREATE TABLE cities_ab
PARTITION OF cities (
CONSTRAINT city_id_nonzero CHECK (city_id != 0)
) FOR VALUES IN ('a', 'b');Создание ÑекÑии ÑаблиÑÑ, ÑекÑиониÑÑемой по ÑпиÑкам (пÑи ÑÑом Ñама ÑекÑÐ¸Ñ Ñакже ÑоздаÑÑÑÑ ÑекÑиониÑÑемой), и добавление ÑекÑии в неÑ:
CREATE TABLE cities_ab
PARTITION OF cities (
CONSTRAINT city_id_nonzero CHECK (city_id != 0)
) FOR VALUES IN ('a', 'b') PARTITION BY RANGE (population);
CREATE TABLE cities_ab_10000_to_100000
PARTITION OF cities_ab FOR VALUES FROM (10000) TO (100000);Создание ÑекÑий ÑаблиÑÑ, ÑекÑиониÑÑемой по Ñ ÐµÑÑ:
CREATE TABLE orders_p1 PARTITION OF orders
FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE orders_p2 PARTITION OF orders
FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE orders_p3 PARTITION OF orders
FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE orders_p4 PARTITION OF orders
FOR VALUES WITH (MODULUS 4, REMAINDER 3);Создание ÑекÑии по ÑмолÑаниÑ:
CREATE TABLE cities_partdef
PARTITION OF cities DEFAULT;СовмеÑÑимоÑÑÑ
Ðоманда 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.
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа
ÐозможноÑÑÑ ÑказÑваÑÑ ÑпиÑки ÑÑолбÑов в дейÑÑвиÑÑ
внеÑнего клÑÑа SET DEFAULT и SET NULL ÑвлÑеÑÑÑ ÑаÑÑиÑением PostgreSQL.
ÐозможноÑÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑолбÑÑ ÑникалÑного индекÑа вмеÑÑо ÑÑолбÑов пеÑвиÑного клÑÑа или огÑаниÑÐµÐ½Ð¸Ñ ÑникалÑноÑÑи ÑвлÑеÑÑÑ ÑаÑÑиÑением PostgreSQL.
NULL «ÐгÑаниÑение»
«ÐгÑаниÑение» NULL (на Ñамом деле ÑÑо не огÑаниÑение) ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro ÑÑандаÑÑа SQL, коÑоÑое Ñеализовано Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дÑÑгими СУÐÐ (и Ð´Ð»Ñ ÑиммеÑÑии Ñ Ð¾Ð³ÑаниÑением NOT NULL). Так как ÑÑо поведение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð»Ñбого ÑÑолбÑа, его пÑиÑÑÑÑÑвие не неÑÑÑ ÑмÑÑловой нагÑÑзки.
Ðмена огÑаниÑений
Ð ÑÑандаÑÑе SQL говоÑиÑÑÑ, ÑÑо имена огÑаниÑений ÑаблиÑÑ Ð¸ огÑаниÑений домена Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑникалÑнÑми в ÑÑ
еме, ÑодеÑжаÑей ÑÑÑ ÑаблиÑÑ Ð¸Ð»Ð¸ домен. Ðднако Postgres Pro менее ÑÑÑог: он ÑÑебÑÐµÑ ÑолÑко, ÑÑÐ¾Ð±Ñ Ð¸Ð¼ÐµÐ½Ð° бÑли ÑникалÑÐ½Ñ ÑÑеди огÑаниÑений, пÑиÑоединÑннÑÑ
к данной конкÑеÑной ÑаблиÑе или доменÑ. Ðо Ñакого поÑÐ»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÑ Ð´Ð»Ñ Ð¾Ð³ÑаниÑений, поÑÑÑоеннÑÑ
на индекÑаÑ
(огÑаниÑений UNIQUE, PRIMARY KEY и EXCLUDE), Ñак как огÑаниÑение и ÑвÑзаннÑй Ñ Ð½Ð¸Ð¼ Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð½Ð¾ имÑ, а имена индекÑов Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑникалÑÐ½Ñ ÑÑеди вÑеÑ
оÑноÑений в иÑ
ÑÑ
еме.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð² Postgres Pro огÑаниÑÐµÐ½Ð¸Ñ NOT NULL вообÑе не имеÑÑ Ð¸Ð¼Ñн, Ñак ÑÑо на ниÑ
ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ ÑникалÑноÑÑи не ÑаÑпÑоÑÑÑанÑÑÑÑÑ. Ðднако ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼ÐµÐ½ÑÑÑÑÑ Ð² бÑдÑÑиÑ
вÑпÑÑкаÑ
.
ÐаÑледование
ÐножеÑÑвенное наÑледование поÑÑедÑÑвом INHERITS ÑвлÑеÑÑÑ ÑзÑковÑм ÑаÑÑиÑением Postgres Pro. SQL:1999 и более поздние ÑÑандаÑÑÑ Ð¾Ð¿ÑеделÑÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñное наÑледование Ñ Ð´ÑÑгим ÑинÑакÑиÑом и ÑмÑÑлом. ÐаÑледование в ÑÑиле SQL:1999 пока еÑÑ Ð½Ðµ поддеÑживаеÑÑÑ Ð² Postgres Pro.
ТаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов
Postgres Pro позволÑÐµÑ ÑоздаÑÑ ÑаблиÑÑ Ð±ÐµÐ· ÑÑолбÑов (напÑимеÑ, CREATE TABLE foo();). ÐÑо ÑаÑÑиÑение ÑÑандаÑÑа SQL, коÑоÑÑй не допÑÑÐºÐ°ÐµÑ ÑаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов. ТаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов Ñами по Ñебе не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ, но еÑли иÑ
запÑеÑиÑÑ, возникаÑÑ ÑÑÑаннÑе оÑобÑе ÑиÑÑаÑии Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE DROP COLUMN, Ñак ÑÑо лÑÑÑим ваÑианÑом кажеÑÑÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑо ÑÑебование ÑÑандаÑÑа.
ÐножеÑÑво ÑÑолбÑов иденÑиÑикаÑии
Postgres Pro позволÑÐµÑ Ð¸Ð¼ÐµÑÑ Ð² ÑаблиÑе более одного ÑÑолбÑа иденÑиÑикаÑии. Ð ÑÑандаÑÑе же говоÑиÑÑÑ, ÑÑо в ÑаблиÑе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼Ð°ÐºÑимÑм один ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑии. ÐÑо огÑаниÑение оÑлаблено в оÑновном Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑей гибкоÑÑи пÑи вÑполнении изменений в ÑÑ
еме или мигÑаÑии. ÐамеÑÑÑе, ÑÑо команда INSERT поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑолÑко одно пÑедложение пеÑеопÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑениÑ, пÑименÑемое ко вÑÐµÐ¼Ñ Ð¾Ð¿ÐµÑаÑоÑÑ, Ñак ÑÑо Ñ Ð½ÐµÑколÑкими ÑÑолбÑами иденÑиÑикаÑии ÑазлиÑное поведение не поддеÑживаеÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñм обÑазом.
ÐенеÑиÑÑемÑе ÑÑолбÑÑ
Указание STORED оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе, но иÑполÑзÑеÑÑÑ Ð¸ в дÑÑгиÑ
ÑеализаÑиÑÑ
баз даннÑÑ
SQL. СÑандаÑÑ SQL не пÑедÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ñ
Ñанение генеÑиÑÑемÑÑ
ÑÑолбÑов.
ÐÑедложение LIKE
ХоÑÑ Ð¿Ñедложение LIKE опиÑано в ÑÑандаÑÑе SQL, многие ваÑианÑÑ ÐµÐ³Ð¾ иÑполÑзованиÑ, допÑÑÑимÑе в Postgres Pro, в ÑÑандаÑÑе не опиÑанÑ, а некоÑоÑÑе пÑедÑÑмоÑÑеннÑе в ÑÑандаÑÑе возможноÑÑи не ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² Postgres Pro.
ÐÑедложение WITH
ÐÑедложение WITH ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro; в ÑÑандаÑÑе паÑамеÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ оговаÑиваÑÑÑÑ.
ТаблиÑнÑе пÑоÑÑÑанÑÑва
ÐонÑепÑÐ¸Ñ ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв в Postgres Pro оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе. Ðак ÑледÑÑвие, пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ TABLESPACE и USING INDEX TABLESPACE ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми.
ТипизиÑованнÑе ÑаблиÑÑ
ТипизиÑованнÑе ÑаблиÑÑ ÑеализÑÑÑ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑво ÑÑандаÑÑа SQL. СоглаÑно ÑÑандаÑÑÑ, ÑипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑодеÑÐ¶Ð¸Ñ ÑÑолбÑÑ, ÑооÑвеÑÑÑвÑÑÑие нижележаÑÐµÐ¼Ñ ÑоÑÑÐ°Ð²Ð½Ð¾Ð¼Ñ ÑипÑ, и еÑÑ Ð¾Ð´Ð¸Ð½ ÑÑолбеÑ, ÑÑÑлаÑÑийÑÑ Ð½Ð° ÑебÑ. Postgres Pro не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑÑлаÑÑиеÑÑ Ð½Ð° ÑÐµÐ±Ñ ÑÑолбÑÑ Ñвно.
ÐÑедложение PARTITION BY
ÐÑедложение PARTITION BY ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.
ÐÑедложение PARTITION OF
ÐÑедложение PARTITION OF ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.