CREATE FOREIGN TABLE
CREATE FOREIGN TABLE â ÑоздаÑÑ ÑÑоÑоннÑÑ ÑаблиÑÑ
СинÑакÑиÑ
CREATE FOREIGN TABLE [ IF NOT EXISTS ]имÑ_ÑаблиÑÑ( [ {имÑ_ÑÑолбÑаÑип_даннÑÑ[ OPTIONS (паÑамеÑÑ'знаÑение' [, ... ] ) ] [ COLLATEпÑавило_ÑоÑÑиÑовки] [огÑаниÑение_ÑÑолбÑа[ ... ] ] |огÑаниÑение_ÑаблиÑÑ| LIKEÑаблиÑа_иÑÑоÑник[паÑамеÑÑ_LIKE... ] } [, ... ] ] ) [ INHERITS (ÑаблиÑа_ÑодиÑелÑ[, ... ] ) ] SERVERимÑ_ÑеÑвеÑа[ OPTIONS (паÑамеÑÑ'знаÑение' [, ... ] ) ] CREATE FOREIGN TABLE [ IF NOT EXISTS ]имÑ_ÑаблиÑÑPARTITION OFÑаблиÑа_ÑодиÑелÑ[ ( {имÑ_ÑÑолбÑа[ WITH OPTIONS ] [огÑаниÑение_ÑÑолбÑа[ ... ] ] |огÑаниÑение_ÑаблиÑÑ} [, ... ] ) ] { FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT } SERVERимÑ_ÑеÑвеÑа[ OPTIONS (паÑамеÑÑ'знаÑение' [, ... ] ) ] ÐдеÑÑогÑаниÑение_ÑÑолбÑа: [ CONSTRAINTимÑ_огÑаниÑениÑ] { NOT NULL [ NO INHERIT ] | NULL | CHECK (вÑÑажение) [ NO INHERIT ] | DEFAULTвÑÑажение_по_ÑмолÑаниÑ| GENERATED ALWAYS AS (генеÑиÑÑÑÑее_вÑÑажение) [ STORED | VIRTUAL ] } [ ENFORCED | NOT ENFORCED ] иогÑаниÑение_ÑаблиÑÑ: [ CONSTRAINTимÑ_огÑаниÑениÑ] { NOT NULLимÑ_ÑÑолбÑа[ NO INHERIT ] | CHECK (вÑÑажение) [ NO INHERIT ] } [ ENFORCED | NOT ENFORCED ] ипаÑамеÑÑ_LIKE: { INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | STATISTICS | ALL } иÑказание_гÑаниÑ_ÑекÑии: IN (вÑÑажение_гÑаниÑ_ÑекÑии[, ...] ) | FROM ( {вÑÑажение_гÑаниÑ_ÑекÑии| MINVALUE | MAXVALUE } [, ...] ) TO ( {вÑÑажение_гÑаниÑ_ÑекÑии| MINVALUE | MAXVALUE } [, ...] ) | WITH ( MODULUSÑиÑловаÑ_конÑÑанÑа, REMAINDERÑиÑловаÑ_конÑÑанÑа)
ÐпиÑание
CREATE FOREIGN TABLE ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑоÑоннÑÑ ÑаблиÑÑ Ð² ÑекÑÑей базе даннÑÑ
. ÐладелÑÑем ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, вÑполнивÑий ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ.
ÐÑли Ñказано Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ (напÑимеÑ, CREATE FOREIGN TABLE myschema.mytable ...), ÑаблиÑа бÑÐ´ÐµÑ Ñоздана в ÑÑой ÑÑ
еме. РпÑоÑивном ÑлÑÑае она ÑоздаÑÑÑÑ Ð² ÑекÑÑей ÑÑ
еме. ÐÐ¼Ñ ÑÑоÑонней ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð¾ оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð¼Ñн дÑÑгиÑ
оÑноÑений (ÑаблиÑ, поÑледоваÑелÑноÑÑей, индекÑов, пÑедÑÑавлений, маÑеÑиализованнÑÑ
пÑедÑÑавлений или ÑÑоÑонниÑ
ÑаблиÑ), ÑÑÑеÑÑвÑÑÑиÑ
в ÑÑой ÑÑ
еме.
CREATE FOREIGN TABLE Ñакже авÑомаÑиÑеÑки ÑоздаÑÑ ÑоÑÑавной Ñип даннÑÑ
, ÑооÑвеÑÑÑвÑÑÑий одной ÑÑÑоке ÑÑоÑонней ÑаблиÑÑ. Таким обÑазом, Ð¸Ð¼Ñ ÑÑоÑонней ÑаблиÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ ÑовпадаÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑÑеÑÑвÑÑÑего Ñипа в ÑÑой же ÑÑ
еме.
ÐÑли Ñказано пÑедложение PARTITION OF, ÑаблиÑа ÑоздаÑÑÑÑ Ð² виде ÑекÑии parent_table Ñ ÑказаннÑми гÑаниÑами.
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑÑоÑоннÑÑ ÑаблиÑÑ, необÑ
одимо имеÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ ÑÑоÑоннего ÑеÑвеÑа, а Ñакже пÑаво USAGE Ð´Ð»Ñ Ð²ÑеÑ
Ñипов ÑÑолбÑов, ÑодеÑжаÑиÑ
ÑÑ Ð² ÑаблиÑе.
ÐаÑамеÑÑÑ
IF NOT EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли оÑноÑение Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание. ÐамеÑÑÑе, ÑÑо Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо ÑÑÑеÑÑвÑÑÑее оÑноÑение как-Ñо ÑооÑноÑиÑÑÑ Ñ Ñем, коÑоÑое могло Ð±Ñ Ð±ÑÑÑ Ñоздано.
имÑ_ÑаблиÑÑÐÐ¼Ñ Ñоздаваемой ÑаблиÑÑ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа, Ñоздаваемого в новой ÑаблиÑе.
Ñип_даннÑÑТип даннÑÑ ÑÑолбÑа (Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¾Ð¿Ñеделение маÑÑива Ñ ÑÑим Ñипом). Ðа дополниÑелÑнÑми ÑведениÑми о ÑÐ¸Ð¿Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑе поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ PostgreSQL, обÑаÑиÑеÑÑ Ðº Ðлаве 8.
COLLATEпÑавило_ÑоÑÑиÑовкиÐÑедложение
COLLATEназнаÑÐ°ÐµÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ ÑÑолбÑа (коÑоÑÑй должен имеÑÑ Ñип, поддеÑживаÑÑий ÑоÑÑиÑовкÑ). ÐÑли оно оÑÑÑÑÑÑвÑеÑ, иÑполÑзÑеÑÑÑ Ð¿Ñавило ÑоÑÑиÑовки по ÑмолÑаниÑ, ÑÑÑановленное Ð´Ð»Ñ Ñипа даннÑÑ ÑÑолбÑа.INHERITS (ÑаблиÑа_ÑодиÑелÑ[, ... ] )ÐеобÑзаÑелÑное пÑедложение
INHERITSопÑеделÑÐµÑ ÑпиÑок ÑаблиÑ, Ð¾Ñ ÐºÐ¾ÑоÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑÑоÑоннÑÑ ÑаблиÑа бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки наÑледоваÑÑ Ð²Ñе ÑÑолбÑÑ. РодиÑелÑÑкими ÑаблиÑами могÑÑ Ð±ÑÑÑ Ð¾Ð±ÑÑнÑе или ÑÑоÑонние ÑаблиÑÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾Ð¹ ÑоÑмÑCREATE TABLE.PARTITION OFÑаблиÑа_ÑодиÑелÑ{ FOR VALUESÑказание_гÑаниÑ_ÑекÑии| DEFAULT }ÐÑа ÑоÑма Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑоÑонней ÑаблиÑÑ Ð² виде ÑекÑии Ñказанной ÑодиÑелÑÑкой ÑаблиÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми гÑаниÑнÑми знаÑениÑми. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾Ð¹ ÑоÑÐ¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
CREATE TABLE. ÐамеÑÑÑе, ÑÑо в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ допÑÑкаеÑÑÑ Ñоздание ÑÑоÑонней ÑаблиÑÑ Ð² виде ÑекÑии ÑодиÑелÑÑкой ÑаблиÑÑ, еÑли в ÑÑой ÑаблиÑе еÑÑÑ ÑникалÑнÑе индекÑÑ (UNIQUE). (См. Ñакже опиÑаниеALTER TABLE ATTACH PARTITION.)LIKEÑаблиÑа_иÑÑоÑник[паÑамеÑÑ_LIKE... ]ÐÑедложение
LIKEопÑеделÑÐµÑ ÑаблиÑÑ, из коÑоÑой в новÑÑ ÑаблиÑÑ Ð±ÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð²Ñе имена ÑÑолбÑов, Ð¸Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° NULL.РоÑлиÑие оÑ
INHERITS, Ð½Ð¾Ð²Ð°Ñ Ð¸ иÑÑ Ð¾Ð´Ð½Ð°Ñ ÑаблиÑа ÑÑановÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑми поÑле завеÑÑÐµÐ½Ð¸Ñ ÑозданиÑ. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе не оÑÑажаÑÑÑÑ Ð² новой, а даннÑе новой ÑаблиÑÑ Ð½Ðµ вклÑÑаÑÑÑÑ Ð² ÑезÑлÑÑÐ°Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹.ÐÑоме Ñого, в оÑлиÑие оÑ
INHERITS, ÑÑолбÑÑ Ð¸ огÑаниÑениÑ, копиÑÑемÑе командойLIKE, не обÑединÑÑÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑми ÑÑолбÑами и огÑаниÑениÑми. ÐÑли дÑблиÑÑÑÑееÑÑ Ð¸Ð¼Ñ ÑказÑваеÑÑÑ Ñвно или Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð² дÑÑгом пÑедложенииLIKE, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка.ÐеобÑзаÑелÑнÑе пÑедложениÑ
паÑамеÑÑ_LIKEÑказÑваÑÑ, какие дополниÑелÑнÑе ÑвойÑÑва иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð±ÑдÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ. УказаниеINCLUDINGкопиÑÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑвойÑÑво, аEXCLUDINGиÑклÑÑÐ°ÐµÑ ÐµÐ³Ð¾. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑEXCLUDING. ÐÑли к Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑа оÑноÑÑÑÑÑ Ð½ÐµÑколÑко Ñказаний, бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð¿Ð¾Ñледнее. ÐопÑÑÑимÑе ÑказаниÑ:INCLUDING COMMENTSÐопиÑоваÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ð´Ð»Ñ ÑкопиÑованнÑÑ ÑÑолбÑов и огÑаниÑений. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии не копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего ÑкопиÑованнÑе ÑÑолбÑÑ Ð¸ огÑаниÑÐµÐ½Ð¸Ñ Ð² новой ÑаблиÑе оказÑваÑÑÑÑ Ð±ÐµÐ· комменÑаÑиев.
INCLUDING CONSTRAINTSÐопиÑоваÑÑ Ð¾Ð³ÑаниÑениÑ-пÑовеÑки (
CHECK). Рданном конÑекÑÑе огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÑовне ÑÑолбÑов и на ÑÑовне ÑаблиÑÑ Ð½Ðµ ÑазлиÑаÑÑÑÑ. ÐгÑаниÑÐµÐ½Ð¸Ñ NOT NULL копиÑÑÑÑÑÑ Ð² новÑÑ ÑаблиÑÑ Ð²Ñегда.INCLUDING DEFAULTSÐопиÑоваÑÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений по ÑмолÑÐ°Ð½Ð¸Ñ Ð² опÑеделениÑÑ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ копиÑÑÑÑÑÑ, вÑледÑÑвие Ñего в новой ÑаблиÑе ÑкопиÑованнÑе ÑÑолбÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ NULL. ÐамеÑÑÑе, ÑÑо пÑи копиÑовании подобнÑÑ Ð²ÑÑажений, в коÑоÑÑÑ Ð²ÑзÑваÑÑÑÑ ÑÑнкÑии, модиÑиÑиÑÑÑÑие ÐÐ, напÑимеÑ
nextval, Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑазовÑваÑÑÑÑ ÑÑнкÑионалÑÐ½Ð°Ñ ÑвÑÐ·Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ñ Ð½Ð¾Ð²Ð¾Ð¹.INCLUDING GENERATEDÐопиÑоваÑÑ Ð²ÑÑажениÑ, генеÑиÑÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÑемÑÑ ÑÑолбÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñе новÑе ÑÑолбÑÑ Ð±ÑдÑÑ Ð¾Ð±ÑÑнÑми базовÑми ÑÑолбÑами.
INCLUDING STATISTICSÐопиÑоваÑÑ Ð² новÑÑ ÑаблиÑÑ ÑаÑÑиÑеннÑÑ ÑÑаÑиÑÑикÑ.
INCLUDING ALLУказание
INCLUDING ALLÑвлÑеÑÑÑ ÑокÑаÑÑннÑм ваÑианÑом вÑбоÑа вÑÐµÑ Ð¸Ð¼ÐµÑÑÐ¸Ñ ÑÑ Ð¾ÑделÑнÑÑ Ð¿Ð°ÑамеÑÑов. (ÐоÑлеINCLUDING ALLможно дополниÑелÑно добавиÑÑ Ð¿ÑедложениÑEXCLUDING, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ð²Ñе паÑамеÑÑÑ, за иÑклÑÑением некоÑоÑÑÑ .)
CONSTRAINTимÑ_огÑаниÑениÑÐеобÑзаÑелÑное Ð¸Ð¼Ñ ÑÑолбÑа или огÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ. ÐÑи наÑÑÑении огÑаниÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ Ð¸Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ Ð² ÑообÑении об оÑÐ¸Ð±ÐºÐ°Ñ , Ñак ÑÑо имена огÑаниÑений вида
ÑÑÐ¾Ð»Ð±ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑммогÑÑ ÑообÑиÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½ÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± огÑаниÑении клиенÑÑÐºÐ¾Ð¼Ñ Ð¿ÑиложениÑ. (Ðмена огÑаниÑений, вклÑÑаÑÑие пÑобелÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заклÑÑаÑÑ Ð² двойнÑе кавÑÑки.) ÐÑли Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð½Ðµ Ñказано, ÑиÑÑема генеÑиÑÑÐµÑ Ð¸Ð¼Ñ Ð°Ð²ÑомаÑиÑеÑки.NOT NULL[ NO INHERIT ]ÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL.
ÐгÑаниÑение Ñ Ð¿Ð¾Ð¼ÐµÑкой
NO INHERITне бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð´Ð¾ÑеÑними ÑаблиÑами.NULLÐаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL (по ÑмолÑаниÑ).
ÐÑо пÑедложение пÑедназнаÑено ÑолÑко Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð½ÐµÑÑандаÑÑнÑми базами даннÑÑ SQL. ÐÑполÑзоваÑÑ ÐµÐ³Ð¾ в новÑÑ Ð¿ÑиложениÑÑ Ð½Ðµ ÑекомендÑеÑÑÑ.
CHECK (вÑÑажение) [ NO INHERIT ]РогÑаниÑении
CHECKзадаÑÑÑÑ Ð²ÑÑажение, возвÑаÑаÑÑее логиÑеÑкий ÑезÑлÑÑаÑ, коÑоÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдовлеÑвоÑÑÑÑ Ð²Ñе ÑÑÑоки в ÑÑоÑонней ÑаблиÑе; Ñо еÑÑÑ ÑÑо вÑÑажение должно вÑдаваÑÑ TRUE или UNKNOWN, но никогда FALSE, Ð´Ð»Ñ Ð²ÑÐµÑ ÑÑÑок в ÑÑоÑонней ÑаблиÑе. ÐгÑаниÑение-пÑовеÑка, заданное как огÑаниÑение ÑÑолбÑа, должно ÑÑÑлаÑÑÑÑ ÑолÑко на знаÑение Ñамого ÑÑолбÑа, Ñогда как огÑаниÑение на ÑÑовне ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ Ð¸ на неÑколÑко ÑÑолбÑов.РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÑÑажениÑ
CHECKне могÑÑ ÑодеÑжаÑÑ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑÑ Ð¸Ð»Ð¸ ÑÑÑлаÑÑÑÑ Ð½Ð° пеÑеменнÑе, кÑоме как на ÑÑолбÑÑ ÑекÑÑей ÑÑÑоки. Также допÑÑÑима ÑÑÑлка на ÑиÑÑемнÑй ÑÑолбеÑtableoid, но не на дÑÑгие ÑиÑÑемнÑе ÑÑолбÑÑ.ÐгÑаниÑение Ñ Ð¿Ð¾Ð¼ÐµÑкой
NO INHERITне бÑÐ´ÐµÑ Ð½Ð°ÑледоваÑÑÑÑ Ð´Ð¾ÑеÑними ÑаблиÑами.DEFAULTвÑÑажение_по_ÑмолÑаниÑÐÑедложение
DEFAULTзадаÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа, в опÑеделении коÑоÑого оно пÑиÑÑÑÑÑвÑеÑ. ÐнаÑение задаÑÑÑÑ Ð²ÑÑажением без пеÑеменнÑÑ (подзапÑоÑÑ Ð¸ пеÑекÑÑÑÑнÑе ÑÑÑлки на дÑÑгие ÑÑолбÑÑ ÑекÑÑей ÑаблиÑÑ Ð² нÑм не допÑÑкаÑÑÑÑ). Тип даннÑÑ Ð²ÑÑажениÑ, задаÑÑего знаÑение по ÑмолÑаниÑ, должен ÑооÑвеÑÑÑвоваÑÑ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑолбÑа.ÐÑо вÑÑажение бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð²Ð¾ вÑÐµÑ Ð¾Ð¿ÐµÑаÑиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , в коÑоÑÑÑ Ð½Ðµ задаÑÑÑÑ Ð·Ð½Ð°Ñение данного ÑÑолбÑа. ÐÑли знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ опÑеделено, Ñаким знаÑением бÑÐ´ÐµÑ NULL.
GENERATED ALWAYS AS (генеÑиÑÑÑÑее_вÑÑажение) [ STORED | VIRTUAL ]ÐÑо пÑедложение ÑоздаÑÑ ÑÑÐ¾Ð»Ð±ÐµÑ ÐºÐ°Ðº генеÑиÑÑемÑй. Ð Ñакой ÑÑÐ¾Ð»Ð±ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð´Ð°Ð½Ð½Ñе, а пÑи ÑÑении его возвÑаÑаеÑÑÑ ÑезÑлÑÑÐ°Ñ Ñказанного вÑÑажениÑ.
ÐÑли Ñказано клÑÑевое Ñлово
VIRTUAL, ÑÑÐ¾Ð»Ð±ÐµÑ Ð²ÑÑиÑлÑеÑÑÑ Ð¿Ñи ÑÑении. (ÐбÑÑÑка ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑпÑинимаÑÑ ÐµÐ³Ð¾ какNULLв новÑÑ ÑÑÑÐ¾ÐºÐ°Ñ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑбÑаÑÑ, Ñ ÑаниÑÑ Ð»Ð¸ его какNULLили пÑоигноÑиÑоваÑÑ). ÐÑли ÑказаноSTORED, ÑÑÐ¾Ð»Ð±ÐµÑ Ð²ÑÑиÑлÑеÑÑÑ Ð¿Ñи запиÑи. (ÐÑÑиÑленное знаÑение бÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ Ð¾Ð±ÑÑÑке ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÐ°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑÐ¾Ñ ÑаниÑÑ ÐµÐ³Ð¾ и заÑем вÑдаваÑÑ Ð¿Ñи ÑÑении.) ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âVIRTUAL.ÐенеÑиÑÑÑÑее вÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº дÑÑгим ÑÑолбÑам ÑаблиÑÑ, но не к дÑÑгим генеÑиÑÑемÑм ÑÑолбÑам. ÐÑе ÑÑнкÑии и опеÑаÑоÑÑ Ð² нÑм Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾ÑÑоÑннÑми. ÐбÑаÑаÑÑÑÑ Ðº дÑÑгим ÑаблиÑам в ÑÐ°ÐºÐ¸Ñ Ð²ÑÑажениÑÑ Ð½ÐµÐ»ÑзÑ.
имÑ_ÑеÑвеÑаÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего ÑÑоÑоннего ÑеÑвеÑа, пÑедоÑÑавлÑÑÑего даннÑÑ ÑÑоÑоннÑÑ ÑаблиÑÑ. Ð Ñоздании ÑеÑвеÑа можно ÑзнаÑÑ Ð² CREATE SERVER.
OPTIONS (паÑамеÑÑ'знаÑение' [, ...] )ÐаÑамеÑÑÑ, ÑвÑзÑваемÑе Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑоÑонней ÑаблиÑей или одним из ÐµÑ ÑÑолбÑов. ÐопÑÑÑимÑе имена и знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ обÑÑÑки ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ñвои; они конÑÑолиÑÑÑÑÑÑ ÑÑнкÑией пÑовеÑки, ÑвÑзанной Ñ ÑÑой обÑÑÑкой. Ðмена паÑамеÑÑов не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ (Ñ Ð¾ÑÑ Ð¿Ð°ÑамеÑÑ ÑаблиÑÑ Ð¸ паÑамеÑÑ ÑÑолбÑа вполне могÑÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð½Ð¾ имÑ).
ÐÑимеÑаниÑ
ÐгÑаниÑÐµÐ½Ð¸Ñ ÑÑоÑонниÑ
ÑÐ°Ð±Ð»Ð¸Ñ (напÑимеÑ, CHECK и NOT NULL) не конÑÑолиÑÑÑÑÑÑ ÑдÑом ÑиÑÑÐµÐ¼Ñ PostgreSQL, как не пÑÑаÑÑÑÑ Ð¸Ñ
конÑÑолиÑоваÑÑ Ð¸ болÑÑинÑÑво обÑÑÑок ÑÑоÑонниÑ
даннÑÑ
; Ñо еÑÑÑ, ÑиÑÑема пÑоÑÑо пÑедполагаеÑ, ÑÑо огÑаниÑение вÑполнÑеÑÑÑ. ÐонÑÑолиÑоваÑÑ Ñакое огÑаниÑение не имело Ð±Ñ Ð±Ð¾Ð»ÑÑого ÑмÑÑла, Ñак как оно пÑименÑлоÑÑ Ð±Ñ ÑолÑко к ÑÑÑокам, добавлÑемÑм или изменÑемÑм ÑеÑез ÑÑоÑоннÑÑ ÑаблиÑÑ, но не к ÑÑÑокам, модиÑиÑиÑÑемÑм дÑÑгим пÑÑÑм, напÑимеÑ, непоÑÑедÑÑвенно на ÑдалÑнном ÑеÑвеÑе. ÐмеÑÑо ÑÑого, огÑаниÑение, ÑвÑзанное Ñо ÑÑоÑонней ÑаблиÑей, должно пÑедÑÑавлÑÑÑ Ð¾Ð³ÑаниÑение, вÑполнение коÑоÑого обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÑдалÑннÑй ÑеÑвеÑ.
ÐекоÑоÑÑе ÑпеÑиализиÑованнÑе обÑÑÑки ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑм ваÑианÑом обÑаÑÐµÐ½Ð¸Ñ Ðº доÑÑÑпнÑм ÑеÑез Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñм, и в ÑÑом ÑлÑÑае Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑмеÑÑно ÑеализоваÑÑ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð¾Ð³ÑаниÑений в Ñамой Ñакой обÑÑÑке. Ðо не ÑледÑÐµÑ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑ, ÑÑо какаÑ-либо обÑÑÑка ведÑÑ ÑÐµÐ±Ñ Ñак, еÑли об ÑÑом не Ñказано Ñвно в ÐµÑ Ð´Ð¾ÐºÑменÑаÑии.
ХоÑÑ PostgreSQL не пÑÑаеÑÑÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑаблиÑ, он полагаеÑ, ÑÑо они вÑполнÑÑÑÑÑ Ð´Ð»Ñ Ñелей опÑимизаÑии запÑоÑов. ÐÑли в ÑÑоÑонней ÑаблиÑе бÑдÑÑ Ð²Ð¸Ð´Ð½Ñ ÑÑÑоки, не ÑдовлеÑвоÑÑÑÑие обÑÑÐ²Ð»ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¾Ð³ÑаниÑениÑ, запÑоÑÑ Ðº ÑÑой ÑаблиÑе могÑÑ Ð²ÑдаваÑÑ Ð¾Ñибки или некоÑÑекÑнÑе ÑезÑлÑÑаÑÑ. ÐÑвеÑÑÑвенноÑÑÑ Ð·Ð° ÑакÑиÑеÑкое вÑполнение ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° полÑзоваÑеле.
Ðнимание
Ðогда ÑÑоÑоннÑÑ ÑаблиÑа иÑполÑзÑеÑÑÑ Ð² каÑеÑÑве ÑекÑии ÑекÑиониÑованной ÑаблиÑÑ, ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑвное огÑаниÑение, ÑоглаÑно коÑоÑÐ¾Ð¼Ñ ÐµÑ ÑодеÑжимое должно оÑвеÑаÑÑ Ð¿ÑÐ°Ð²Ð¸Ð»Ñ ÑекÑиониÑованиÑ. ÐбеÑпеÑиваÑÑ ÑоблÑдение ÑÑого пÑавила должен полÑзоваÑелÑ; Ð´Ð»Ñ ÑÑого лÑÑÑе вÑего ÑÑÑановиÑÑ ÑооÑвеÑÑÑвÑÑÑее огÑаниÑение на ÑдалÑнном ÑеÑвеÑе.
Ð ÑекÑиониÑованной ÑаблиÑе, ÑодеÑжаÑей ÑекÑии ÑÑоÑонниÑ
ÑаблиÑ, команда UPDATE, изменÑÑÑÐ°Ñ ÐºÐ»ÑÑ ÑекÑиониÑованиÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к пеÑемеÑÐµÐ½Ð¸Ñ ÑÑÑоки из локалÑной ÑекÑии в ÑекÑÐ¸Ñ Ð² ÑÑоÑонней ÑаблиÑе пÑи ÑÑловии, ÑÑо обÑÑÑка ÑÑоÑонниÑ
даннÑÑ
поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑенапÑавление коÑÑежей. Ðднако пеÑемеÑение ÑÑÑоки из ÑекÑии в ÑÑоÑонней ÑаблиÑе в дÑÑгÑÑ ÑекÑÐ¸Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾. Ðоманда UPDATE, вÑзÑваÑÑÐ°Ñ Ñакое пеÑемеÑение, пÑеÑвÑÑÑÑ Ð¾Ñибкой из-за огÑаниÑÐµÐ½Ð¸Ñ ÑекÑии, еÑли на ÑдалÑнном ÑеÑвеÑе ÑÑÑановлено нÑжное огÑаниÑение.
ÐодобнÑе ÑообÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð¸ на генеÑиÑÑемÑе ÑÑолбÑÑ. Ð¥ÑанимÑе генеÑиÑÑемÑе ÑÑолбÑÑ Ð²ÑÑиÑлÑÑÑÑÑ Ð¿Ñи добавлении или изменении даннÑÑ Ð½Ð° локалÑном ÑеÑвеÑе PostgreSQL и пеÑедаÑÑÑÑ Ð¾Ð±ÑÑÑке ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÐ°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° запиÑаÑÑ Ð¸Ñ Ð² ÑÑоÑоннее Ñ ÑанилиÑе даннÑÑ . ÐÑи ÑÑом ÑеÑÐ²ÐµÑ Ð½Ðµ ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¾Ð·Ð²ÑаÑаемÑе пÑи обÑаÑении к ÑÑоÑонней ÑаблиÑе знаÑÐµÐ½Ð¸Ñ Ð³ÐµÐ½ÐµÑиÑÑемÑÑ ÑÑолбÑов ÑоглаÑовÑвалиÑÑ Ñ Ð³ÐµÐ½ÐµÑиÑÑÑÑим вÑÑажением. Таким обÑазом, в ÑлÑÑае неÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑÐ¸Ñ Ð·Ð½Ð°Ñений ÑезÑлÑÑаÑÑ Ð·Ð°Ð¿ÑоÑа могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐºÐ¾ÑÑекÑнÑми.
ÐÑимеÑÑ
Создание ÑÑоÑонней ÑаблиÑÑ films, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð´Ð¾ÑÑÑпна ÑеÑез ÑеÑÐ²ÐµÑ film_server:
CREATE FOREIGN TABLE films (
code char(5) NOT NULL,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
)
SERVER film_server;Создание ÑÑоÑонней ÑаблиÑÑ measurement_y2016m07, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð´Ð¾ÑÑÑпна ÑеÑез ÑеÑÐ²ÐµÑ server_07, в виде ÑекÑии ÑаблиÑÑ measurement, ÑекÑиониÑованной по диапазонам:
CREATE FOREIGN TABLE measurement_y2016m07
PARTITION OF measurement FOR VALUES FROM ('2016-07-01') TO ('2016-08-01')
SERVER server_07;СовмеÑÑимоÑÑÑ
Ðоманда CREATE FOREIGN TABLE в оÑновном ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ SQL; однако, как и CREATE TABLE, она допÑÑÐºÐ°ÐµÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ NULL и ÑÑоÑонние ÑаблиÑÑ Ñ Ð½ÑлÑм ÑÑолбÑов. ÐозможноÑÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑов Ñакже ÑвлÑеÑÑÑ ÑаÑÑиÑением PostgreSQL. ÐаÑледование ÑÐ°Ð±Ð»Ð¸Ñ Ð² ÑоÑме, опÑеделÑнной в PostgreSQL, ÑÑандаÑÑÑ Ð½Ðµ ÑооÑвеÑÑÑвÑеÑ. ÐÑедложение LIKE, поддеÑживаемое ÑÑой командой, Ñакже не ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ.