|
проблемы с nextval
|
|||
---|---|---|---|
#18+
Коллеги, Помогите решить проблему, в MSSQL это работало! Есть первичный ключ типа SERIAL. Делаю вставку из скрипта и указываю значения ключа в явном виде (это нужно по бизнесу) insert into S_ACCOUNT (ACCOUNTID,CREATED) values (1, current_timestamp); все работает, но после того как добавлю новую запись через функцию insert into S_ACCOUNT(CREATED) values (current_timestamp) пишет ошибку что '1' уже присоен записи. В MSSQL то решалось опцией IDENTITY_INSERT. После ее выключения, после вставки напрямую через скрипт ключи генерились с учетом уже занятых id. Как решить эту неожиданную проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 21:02 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewew, не верю!!! тестовый пример в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 22:20 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
Victor Nevsky, create table S_ACCOUNT ( ACCOUNTID SERIAL not null, CREATED TIMESTAMP not null ); alter table S_ACCOUNT add constraint PK_S_ACCOUNT primary key (ACCOUNTID); /*==============================================================*/ /* Index: XP_ACCOUNTID */ /*==============================================================*/ create unique index XP_ACCOUNTID on S_ACCOUNT ( ACCOUNTID ); ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 22:37 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewew, insert into S_ACCOUNT (ACCOUNTID,CREATED) values (1, current_timestamp); insert into S_ACCOUNT (ACCOUNTID,CREATED) values (2, current_timestamp); ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 22:38 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewew, drop function SystemAccount_Add; CREATE OR REPLACE FUNCTION SystemAccount_Add ( UserId integer) RETURNS integer AS $BODY$ declare newAccountid integer = null; BEGIN insert into S_ACCOUNT(CREATED) values (current_timestamp) RETURNING ACCOUNTID INTO STRICT newAccountid; -- обработчик ошибок return newAccountid; END $BODY$ LANGUAGE 'plpgsql'; ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 22:39 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewewwewewew, insert into S_ACCOUNT (ACCOUNTID,CREATED) values (1, current_timestamp); insert into S_ACCOUNT (ACCOUNTID,CREATED) values (2, current_timestamp); и кто, sequence, скажет, что оно не используется (обновись ....)))) setval в помощь .... зы что за ересь ... и зачем тут serial ....? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 22:50 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewew, SERIAL в Postgres-е — суть последовательность, владельцем которой является колонка в таблице и этой колонке присваивается `DEFAULT nextval()` выражение (синтаксическая обёртка). Если вы будете руками вставлять значения в эту колонку, то последовательность не будет меняться, что и приведёт к ошибке, которую вы видите. Вместо `VALUES (1, current_timestamp)` можно использовать `VALUES (nextval(), current_timestamp)`. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 23:26 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
vyegorovwewewew, SERIAL в Postgres-е — суть последовательность, владельцем которой является колонка в таблице и этой колонке присваивается `DEFAULT nextval()` выражение (синтаксическая обёртка). Если вы будете руками вставлять значения в эту колонку, то последовательность не будет меняться, что и приведёт к ошибке, которую вы видите. Вместо `VALUES (1, current_timestamp)` можно использовать `VALUES (nextval(), current_timestamp)`. Большое спасибо! Заработало! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 08:54 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
Victor Nevsky, serial как я понял используют для первичных ключей с автоинкриментом. Разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 08:55 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
wewewew, vyegorov вам уже написал, что SERIAL это обёртка. по факту это INTEGER с DEFAULT nextval('table_id_field_name.seq'). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:32 |
|
проблемы с nextval
|
|||
---|---|---|---|
#18+
Lonepsychowewewew, почитайте про SERIAL и про сиквенсы , а праймари кей из поля делает индекс . Спасибо! Теперь у меня у меня заработала и ручная и автоматическая вставка! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 14:49 |
|
|
start [/forum/topic.php?fid=53&msg=39554706&tid=1996098]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 136ms |
0 / 0 |