Давайте в `psql` посмотрим описание таблицы `author`. Открываем `` `psql` ``, вводим `\d author`. ```sql rroom_db=> \d author Table "public.author" Column | Type | Collation | Nullable | Default -------------+------------------------+-----------+----------+------------------------------ author_id | bigint | | not null | generated always as identity name | character varying(150) | | not null | description | text | | | Indexes: "author_pkey" PRIMARY KEY, btree (author_id) Check constraints: "author_description_check" CHECK (length(description) >= 30) "author_name_check" CHECK (length(name::text) >= 3) Referenced by: TABLE "book" CONSTRAINT "book_author_id_fkey" FOREIGN KEY (author_id) REFERENCES author(author_id) ``` И также давайте посмотрим просто выдачу `\d` по нашей базе данных: ```sql rroom_db=> \d List of relations Schema | Name | Type | Owner --------+-------------------------------+----------+------- public | author | table | rroom public | author_author_id_seq | sequence | rroom public | book | table | rroom public | book_book_id_seq | sequence | rroom public | book_category | table | rroom public | book_category_category_id_seq | sequence | rroom (6 rows) ``` Напрямую работать с последовательностью для первичных ключей как правило нет необходимости, но полезно знать, что они существуют и какие возможности дают. Давайте посмотрим информацию по последовательности `book_book_id_seq`: ```sql rroom_db=> \d book_book_id_seq Sequence "public.book_book_id_seq" Type | Start | Minimum | Maximum | Increment | Cycles? | Cache --------+-------+---------+---------------------+-----------+---------+------- bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1 Sequence for identity column: public.book.book_id ``` Давайте создадим последовательность и посмотрим, как с ней работать — просто для примера и понимания того, как вы можете с ними работать: ```sql CREATE SEQUENCE tmp_seq START 1 MINVALUE 1 MAXVALUE 9223372036854775807 INCREMENT BY 1 CACHE 1 NO CYCLE; select nextval('tmp_seq'); select nextval('tmp_seq'); select nextval('tmp_seq'); select currval('tmp_seq'); drop sequence tmp_seq; ``` --- ~={green}Задание=~ ```sql create sequence orders_seq; select setval('orders_seq', ((to_char(current_timestamp, 'YYYYMMDD')||'000')::bigint)); ```