Запрос, заблокирован ли поток в Python. Блокировка или нет

Создайте автоматически увеличивающий первичный ключ в postgresql, используя пользовательскую последовательность:

Шаг 1, создайте свою последовательность:

create sequence splog_adfarm_seq
    start 1
    increment 1
    NO MAXVALUE
    CACHE 1;
ALTER TABLE fact_stock_data_detail_seq
OWNER TO pgadmin;

Шаг 2, создайте таблицу

CREATE TABLE splog_adfarm
(
    splog_key    INT unique not null,
    splog_value  VARCHAR(100) not null
);

Шаг 3, вставьте в таблицу

insert into splog_adfarm values (
    nextval('splog_adfarm_seq'), 
    'Is your family tree a directed acyclic graph?'
);

insert into splog_adfarm values (
    nextval('splog_adfarm_seq'), 
    'Will the smart cookies catch the crumb?  Find out now!'
);

Шаг 4, наблюдайте за строками

el@defiant ~ $ psql -U pgadmin -d kurz_prod -c "select * from splog_adfarm"

splog_key |                            splog_value                             
----------+--------------------------------------------------------------------
        1 | Is your family tree a directed acyclic graph?
        2 | Will the smart cookies catch the crumb?  Find out now!
(3 rows)

В двух строках есть клавиши, начинающиеся с 1 и увеличиваются на 1, как определено последовательностью.

Bonus Elite ProTip:

Программисты ненавидят типизацию, а ввод nextval('splog_adfarm_seq') раздражает. Вместо этого вы можете ввести DEFAULT для этого параметра, например:

insert into splog_adfarm values (
    DEFAULT, 
    'Sufficient intelligence to outwit a thimble.'
);

. Для того чтобы выше работала, вы должны определить значение по умолчанию для этого столбца ключа в таблице splog_adfarm. Что красивее.

13
задан I159 14 November 2014 в 20:30
поделиться