ALTER TYPE
ALTER TYPE â измениÑÑ Ð¾Ð¿Ñеделение Ñипа
СинÑакÑиÑ
ALTER TYPEимÑOWNER TO {новÑй_владелеÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER TYPEимÑRENAME TOновое_имÑALTER TYPEимÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°ALTER TYPEимÑRENAME ATTRIBUTEимÑ_аÑÑибÑÑаTOновое_имÑ_аÑÑибÑÑа[ CASCADE | RESTRICT ] ALTER TYPEимÑдейÑÑвие[, ... ] ALTER TYPEимÑADD VALUE [ IF NOT EXISTS ]новое_знаÑение_пеÑеÑиÑлениÑ[ { BEFORE | AFTER }ÑоÑеднее_знаÑение_пеÑеÑиÑлениÑ] ALTER TYPEимÑRENAME VALUEÑÑÑеÑÑвÑÑÑее_знаÑение_пеÑеÑиÑлениÑTOновое_знаÑение_пеÑеÑиÑлениÑALTER TYPEимÑSET (ÑвойÑÑво=знаÑение[, ... ] ) ÐдедейÑÑÐ²Ð¸ÐµÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: ADD ATTRIBUTEимÑ_аÑÑибÑÑаÑип_даннÑÑ[ COLLATEпÑавило_ÑоÑÑиÑовки] [ CASCADE | RESTRICT ] DROP ATTRIBUTE [ IF EXISTS ]имÑ_аÑÑибÑÑа[ CASCADE | RESTRICT ] ALTER ATTRIBUTEимÑ_аÑÑибÑÑа[ SET DATA ] TYPEÑип_даннÑÑ[ COLLATEпÑавило_ÑоÑÑиÑовки] [ CASCADE | RESTRICT ]
ÐпиÑание
ALTER TYPE изменÑÐµÑ Ð¾Ð¿Ñеделение ÑÑÑеÑÑвÑÑÑего Ñипа. ÐÑа команда Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко ÑазновидноÑÑей:
OWNERÐÑа ÑоÑма менÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа Ñипа.
RENAMEÐÑа ÑоÑма менÑÐµÑ Ð¸Ð¼Ñ Ñипа.
SET SCHEMAÐÑа ÑоÑма пеÑеноÑÐ¸Ñ Ñип в дÑÑгÑÑ ÑÑ ÐµÐ¼Ñ.
RENAME ATTRIBUTEÐÑа ÑоÑма ÑабоÑÐ°ÐµÑ ÑолÑко Ñ ÑоÑÑавнÑми Ñипами. Ðна менÑÐµÑ Ð¸Ð¼Ñ Ð¾ÑделÑного аÑÑибÑÑа Ñакого Ñипа.
ADD ATTRIBUTEÐÑа ÑоÑма добавлÑÐµÑ Ð² ÑоÑÑавной Ñип новÑй аÑÑибÑÑ Ñ Ñем же ÑинÑакÑиÑом, ÑÑо и
CREATE TYPE.DROP ATTRIBUTE [ IF EXISTS ]ÐÑа ÑоÑма ÑдалÑÐµÑ Ð°ÑÑибÑÑ Ð¸Ð· ÑоÑÑавного Ñипа. ÐÑли Ñказано
IF EXISTSи аÑÑибÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ, ÑÑо не ÑÑиÑаеÑÑÑ Ð¾Ñибкой. Ð ÑÑом ÑлÑÑае вÑдаÑÑÑÑ ÑолÑко замеÑание.ALTER ATTRIBUTE ... SET DATA TYPEÐÑа ÑоÑма менÑÐµÑ Ñип аÑÑибÑÑа ÑоÑÑавного Ñипа.
ADD VALUE [ IF NOT EXISTS ] [ BEFORE | AFTER ]ÐÑа ÑоÑма добавлÑÐµÑ Ð½Ð¾Ð²Ð¾Ðµ знаÑение в Ñип-пеÑеÑиÑление. ÐоÑÑдок нового знаÑÐµÐ½Ð¸Ñ Ð² пеÑеÑиÑлении можно ÑказаÑÑ, добавив
BEFORE(пеÑед) илиAFTER(поÑле) Ñ Ð¾Ð´Ð½Ð¸Ð¼ из ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñений. ÐÑли Ñакое Ñказание оÑÑÑÑÑÑвÑеÑ, новÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑÑÑ Ð² ÐºÐ¾Ð½ÐµÑ ÑпиÑка знаÑений.С Ñказанием
IF NOT EXISTS, еÑли Ñип Ñже ÑодеÑÐ¶Ð¸Ñ Ð½Ð¾Ð²Ð¾Ðµ знаÑение, оÑибки не пÑоизойдÑÑ: бÑÐ´ÐµÑ Ð²Ñдано замеÑание и ниÑего болÑÑе. Ðез ÑÑого ÑказаниÑ, еÑли Ñакое знаÑение Ñже пÑедÑÑавлено, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка.RENAME VALUEÐÑа ÑоÑма пеÑеименовÑÐ²Ð°ÐµÑ Ð·Ð½Ð°Ñение в Ñипе-пеÑеÑиÑлении. ÐозиÑÐ¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² поÑÑдке пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¿Ñи ÑÑом не менÑеÑÑÑ. ÐÑли ÑÑо знаÑение оÑÑÑÑÑÑвÑÐµÑ Ð¸Ð»Ð¸ в пеÑеÑиÑлении Ñже еÑÑÑ Ð½Ð¾Ð²Ð¾Ðµ имÑ, вÑдаÑÑÑÑ Ð¾Ñибка.
-
SET (ÑвойÑÑво=знаÑение[, ... ] ) ÐÑа ÑоÑма пÑименима ÑолÑко к базовÑм Ñипам. Ðна позволÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑвойÑÑва Ñипа, коÑоÑÑе можно задаÑÑ Ð²
CREATE TYPE, а именно:RECEIVEпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии двоиÑного ввода, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.SENDпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии двоиÑного вÑвода, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.TYPMOD_INпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии, пÑедназнаÑенной Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° модиÑикаÑоÑа Ñипа, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.TYPMOD_OUTпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии, пÑедназнаÑенной Ð´Ð»Ñ Ð²Ñвода модиÑикаÑоÑа Ñипа, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.ANALYZEпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии ÑбоÑа ÑÑаÑиÑÑики Ð´Ð»Ñ ÑÑого Ñипа, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.SUBSCRIPTпозволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑнкÑии-обÑабоÑÑика обÑаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ индекÑÑ Ð´Ð»Ñ ÑÑого Ñипа, а знаÑениеNONEÑдалÑÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° ÑакÑÑ ÑÑнкÑиÑ. ÐенÑÑÑ ÑÑо ÑвойÑÑво ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.STORAGEÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°ÑениÑplain,extended,externalиmain(Ð¸Ñ Ð¾Ð¿Ð¸Ñание можно найÑи в Разделе 66.2). ÐÑи ÑÑом менÑÑÑ Ð²Ð°ÑианÑplainна какой-либо дÑÑгой ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм (Ñак как Ð´Ð»Ñ ÑÑого ÑÑебÑеÑÑÑ, ÑÑÐ¾Ð±Ñ ÑÑнкÑии, ÑеализÑÑÑие Ñип на C, поддеÑживали TOAST), а ÑмениÑÑ Ð»Ñбое дÑÑгое знаÑение наplainне ÑазÑеÑаеÑÑÑ Ð²Ð¾Ð²Ñе (Ñак как знаÑÐµÐ½Ð¸Ñ ÑÑого Ñипа в базе могÑÑ Ñже Ñ ÑаниÑÑÑÑ Ð² виде TOAST). ÐамеÑÑÑе, ÑÑо изменение ÑÑого ÑвойÑÑва Ñамо по Ñебе не влиÑÐµÑ Ð½Ð° ÑÐ¾Ñ ÑанÑннÑе даннÑе, оно менÑÐµÑ ÑолÑко ÑÑÑаÑÐµÐ³Ð¸Ñ TOAST по ÑмолÑаниÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑÑолбÑов, ÑоздаваемÑÑ Ð² бÑдÑÑем. ÐзмениÑÑ ÑÑÑаÑÐµÐ³Ð¸Ñ TOAST Ð´Ð»Ñ ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÑолбÑов позволÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ALTER TABLE.
Ðолее подÑобно ÑÑи ÑвойÑÑва Ñипов опиÑÐ°Ð½Ñ Ð² CREATE TYPE. ÐамеÑÑÑе, ÑÑо везде, где пÑименимо, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвойÑÑв базового Ñипа бÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки оÑÑажаÑÑÑÑ Ð² оÑнованнÑÑ Ð½Ð° ÑÑом Ñипе Ð´Ð¾Ð¼ÐµÐ½Ð°Ñ .
ÐпеÑаÑии ADD ATTRIBUTE, DROP ATTRIBUTE и ALTER ATTRIBUTE можно обÑединиÑÑ Ð² один ÑпиÑок множеÑÑвеннÑÑ
изменений Ð´Ð»Ñ Ð¿Ð°ÑаллелÑного вÑполнениÑ. ÐапÑимеÑ, в одной команде можно добавиÑÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко аÑÑибÑÑов и/или измениÑÑ Ñип неÑколÑкиÑ
аÑÑибÑÑов.
ÐÑполниÑÑ ALTER TYPE Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑего Ñипа. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ Ñипа, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо имеÑÑ Ð¿Ñаво SET ROLE Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме Ñипа. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ Ñип. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа Ñипа в лÑбом ÑлÑÑае.) ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð°ÑÑибÑÑ Ð¸Ð»Ð¸ измениÑÑ ÐµÐ³Ð¾ Ñип, Ñакже ÑÑебÑеÑÑÑ Ð¸Ð¼ÐµÑÑ Ð¿Ñаво USAGE Ð´Ð»Ñ Ñипа аÑÑибÑÑа.
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) ÑÑÑеÑÑвÑÑÑего Ñипа, подлежаÑего изменениÑ.
новое_имÑÐовое Ð¸Ð¼Ñ Ñипа.
новÑй_владелеÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем Ñипа.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° Ñипа.
имÑ_аÑÑибÑÑаÐÐ¼Ñ Ð°ÑÑибÑÑа, подлежаÑего добавлениÑ, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑдалениÑ.
новое_имÑ_аÑÑибÑÑаÐовое Ð¸Ð¼Ñ Ð°ÑÑибÑÑа
Ñип_даннÑÑТип даннÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»Ñемого аÑÑибÑÑа, либо новÑй Ñип даннÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñемого аÑÑибÑÑа.
новое_знаÑение_пеÑеÑиÑлениÑÐовое знаÑение добавлÑеÑÑÑ Ð² ÑпиÑок знаÑений пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð´Ð»Ñ ÑÑÑеÑÑвÑÑÑего знаÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð½Ð¾Ð²Ð¾Ðµ имÑ. Ðак и вÑе ÑлеменÑÑ Ð¿ÐµÑеÑиÑлениÑ, оно должно заклÑÑаÑÑÑÑ Ð² кавÑÑки.
ÑоÑеднее_знаÑение_пеÑеÑиÑлениÑСÑÑеÑÑвÑÑÑие знаÑение в пеÑеÑиÑлении, непоÑÑедÑÑвенно пеÑед или поÑле коÑоÑого по поÑÑÐ´ÐºÑ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾ новое знаÑение. Ðак и вÑе ÑлеменÑÑ Ð¿ÐµÑеÑиÑлениÑ, оно должно заклÑÑаÑÑÑÑ Ð² кавÑÑки.
ÑÑÑеÑÑвÑÑÑее_знаÑение_пеÑеÑиÑлениÑСÑÑеÑÑвÑÑÑее знаÑение в пеÑеÑиÑлении, коÑоÑое бÑÐ´ÐµÑ Ð¿ÐµÑеименовано. Ðак и вÑе ÑлеменÑÑ Ð¿ÐµÑеÑиÑлениÑ, оно должно заклÑÑаÑÑÑÑ Ð² кавÑÑки.
ÑвойÑÑвоÐÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½Ñемого ÑвойÑÑва базового Ñипа; возможнÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð²ÑÑе.
CASCADEÐвÑомаÑиÑеÑки ÑаÑпÑоÑÑÑанÑÑÑ Ð´ÐµÐ¹ÑÑвие опеÑаÑии на ÑипизиÑованнÑе ÑаблиÑÑ, имеÑÑий даннÑй Ñип, и Ð¸Ñ Ð¿Ð¾Ñомки.
RESTRICTÐÑказаÑÑ Ð² вÑполнении опеÑаÑии, еÑли изменÑемÑй Ñип ÑвлÑеÑÑÑ Ñипом ÑипизиÑованной ÑаблиÑÑ. ÐÑо поведение по ÑмолÑаниÑ.
ÐÑимеÑаниÑ
ÐÑли ALTER TYPE ... ADD VALUE (ÑоÑма, добавлÑÑÑÐ°Ñ Ð² Ñип-пеÑеÑиÑление новое знаÑение) вÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии, новое знаÑение нелÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð¾ ÑикÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑанзакÑии.
СÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½Ñми знаÑениÑми пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° бÑваÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ ÑÑавнений, в коÑоÑÑÑ
задейÑÑвÑÑÑÑÑ ÑолÑко наÑалÑнÑе ÑÐ»ÐµÐ½Ñ Ñипа-пеÑеÑиÑлениÑ. ÐбÑÑно ÑÑо пÑоиÑÑ
одиÑ, ÑолÑко еÑли BEFORE или AFTER ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾ÑÑдок нового ÑлеменÑа не в конÑе ÑпиÑка. Ðднако иногда ÑÑо наблÑдаеÑÑÑ Ð´Ð°Ð¶Ðµ Ñогда, когда новое знаÑение добавлÑеÑÑÑ Ð² ÐºÐ¾Ð½ÐµÑ ÑпиÑка (ÑÑо пÑоиÑÑ
одиÑ, еÑли ÑÑÑÑÑик OID «пÑокÑÑÑиваеÑÑÑ» Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа изнаÑалÑного ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñипа-пеÑеÑиÑлениÑ). ÐÑо замедление обÑÑно неÑÑÑеÑÑвенное, но еÑли ÑÑо важно, веÑнÑÑÑ Ð¼Ð°ÐºÑималÑнÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾, Ñдалив и Ñоздав заново ÑÑо пеÑеÑиÑление, либо вÑгÑÑзив ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
и загÑÑзив ÐµÑ Ð²Ð½Ð¾Ð²Ñ.
ÐÑимеÑÑ
ÐеÑеименование Ñипа даннÑÑ :
ALTER TYPE electronic_mail RENAME TO email;
Смена владелÑÑа Ñипа email на joe:
ALTER TYPE email OWNER TO joe;
Смена ÑÑ
ÐµÐ¼Ñ Ñипа email на customers:
ALTER TYPE email SET SCHEMA customers;
Ðобавление нового аÑÑибÑÑа в ÑоÑÑавной Ñип:
ALTER TYPE compfoo ADD ATTRIBUTE f3 int;
Ðобавление нового знаÑÐµÐ½Ð¸Ñ Ð² Ñип-пеÑеÑиÑление, в опÑеделÑнное положение по поÑÑдкÑ:
ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';
ÐеÑеименование знаÑÐµÐ½Ð¸Ñ Ð² пеÑеÑиÑлении:
ALTER TYPE colors RENAME VALUE 'purple' TO 'mauve';
Создание ÑÑнкÑий двоиÑного ввода-вÑвода Ð´Ð»Ñ ÑÑÑеÑÑвÑÑÑего базового Ñипа:
CREATE FUNCTION mytypesend(mytype) RETURNS bytea ...;
CREATE FUNCTION mytyperecv(internal, oid, integer) RETURNS mytype ...;
ALTER TYPE mytype SET (
SEND = mytypesend,
RECEIVE = mytyperecv
);СовмеÑÑимоÑÑÑ
ФоÑÐ¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°ÑÑибÑÑов, ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑÑандаÑÑа SQL; дÑÑгие ÑоÑÐ¼Ñ Ð¾ÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL.