5.2. ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ #
СÑолбÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ назнаÑиÑÑ Ð·Ð½Ð°Ñение по ÑмолÑаниÑ. Ðогда добавлÑеÑÑÑ Ð½Ð¾Ð²Ð°Ñ ÑÑÑока и каким-Ñо ÐµÑ ÑÑолбÑам не пÑиÑваиваÑÑÑÑ Ð·Ð½Ð°ÑениÑ, ÑÑи ÑÑолбÑÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. Также команда ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñми Ð¼Ð¾Ð¶ÐµÑ Ñвно ÑказаÑÑ, ÑÑо ÑÑолбÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð¾ бÑÑÑ Ð¿ÑиÑвоено знаÑение по ÑмолÑаниÑ, не Ð·Ð½Ð°Ñ ÐµÐ³Ð¾. (ÐодÑобнее ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñми опиÑÐ°Ð½Ñ Ð² Ðлаве 6.)
ÐÑли знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ обÑÑвлено Ñвно, им ÑÑиÑаеÑÑÑ Ð·Ð½Ð°Ñение NULL. ÐбÑÑно ÑÑо Ð¸Ð¼ÐµÐµÑ ÑмÑÑл, Ñак как можно ÑÑиÑаÑÑ, ÑÑо NULL пÑедÑÑавлÑÐµÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑнÑе даннÑе.
РопÑеделении ÑаблиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑказÑваÑÑÑÑ Ð¿Ð¾Ñле Ñипа даннÑÑ ÑÑолбÑа. ÐапÑимеÑ:
CREATE TABLE products (
product_no integer,
name text,
price numeric DEFAULT 9.99
);ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÑÑажением, коÑоÑое в ÑÑом ÑлÑÑае вÑÑиÑлÑеÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿ÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (а не когда ÑоздаÑÑÑÑ ÑаблиÑа). ÐапÑимеÑ, ÑÑолбÑÑ timestamp в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑаÑÑо пÑиÑваиваеÑÑÑ CURRENT_TIMESTAMP, ÑÑÐ¾Ð±Ñ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑÑоки в нÑм оказалоÑÑ ÑекÑÑее вÑемÑ. ÐÑÑ Ð¾Ð´Ð¸Ð½ ÑаÑпÑоÑÑÑанÑннÑй пÑÐ¸Ð¼ÐµÑ â генеÑаÑÐ¸Ñ Â«Ð¿Ð¾ÑледоваÑелÑнÑÑ
номеÑов» Ð´Ð»Ñ Ð²ÑеÑ
ÑÑÑок. Ð Postgres Pro ÑÑо обÑÑно делаеÑÑÑ Ð¿ÑимеÑно Ñак:
CREATE TABLE products (
product_no integer DEFAULT nextval('products_product_no_seq'),
...
); здеÑÑ ÑÑнкÑÐ¸Ñ nextval() вÑбиÑÐ°ÐµÑ Ð¾ÑеÑедное знаÑение из поÑледоваÑелÑноÑÑи (Ñм. Раздел 9.17). ÐÑо ÑпоÑÑебление наÑÑолÑко ÑаÑпÑоÑÑÑанено, ÑÑо Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ ÑпеÑиалÑÐ½Ð°Ñ ÐºÐ¾ÑоÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ:
CREATE TABLE products (
product_no SERIAL,
...
);SERIAL обÑÑждаеÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ в ÐодÑазделе 8.1.4.