Автор Тема: Как да направя Auto increment в PostgreSQL  (Прочетена 2700 пъти)

mhydra

  • Напреднали
  • *****
  • Публикации: 715
  • Distribution: Fedora, Mandriva
  • Window Manager: GNOME
    • Профил
Предварително се извянявам за глупавият въпрос който задавам обаче обиколих всички ръководства които успях да намеря и никъде не успях да намеря решение на проблема си.

Въпросът ми е следният:
Имам база данни на PostgreSQL и създавам таблица примерно тази :
asd (asdID, asd_name)

И я създавам така :
create table asd (asdID int primary key, asd_name varchar (10));

Сега по какъв начин да направя primary key  да е auto increment, тоест самичък да си увеличава стойностите.

В MySQL си имам опция AUTO_INCREMENT обаче тук как да стане?

Претърсих във всички ръководства за PostgreSQL обаче не можах да намеря решение.

В смисъл такъв че не искам всеки път да пиша
insert into asd ('nomer', 'neshto si' );

А искам текушият номер на първичния ключ сам да се увеличава.

Надявам се че разбрахте каква ми е целта.
Активен

Указвам помощ за всичко свързано с Fedora и Мандрива.
Може да ме търсите на ICQ.

  • Гост
Как да направя Auto increment в PostgreSQL
« Отговор #1 -: Jan 16, 2006, 14:50 »
ами в документацията си го пише :-)

http://www.postgresql.org/docs....-SERIAL

нещото, което се използва се казва sequence, и от няколко версии насам са направили лесно свързване на конкретна колона със sequence, чрез псевдо типа SERIAL

може да огледаш документацията и какво всъщност е sequence
Активен

  • Гост
Как да направя Auto increment в PostgreSQL
« Отговор #2 -: Jan 16, 2006, 14:50 »
Не знам каква документация си чел, но това си го има отдавна в PostgreSQL, а ако не се лъжа, от версия 7.4 вече и автоматизирано, като са добавени два типа данни:

serial и bigserial, съответно за int4 и int8.

След обявяване на колона от този тип (само една в таблица) автоматично се създава sequence и се дефинира увеличаването му, когато insert-ваш данни в таблицата:

"...

CREATE TABLE tablename (
    colname SERIAL
);

is equivalent to specifying:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer DEFAULT nextval('tablename_colname_seq''<img'> NOT NULL
);

..."
Активен

mhydra

  • Напреднали
  • *****
  • Публикации: 715
  • Distribution: Fedora, Mandriva
  • Window Manager: GNOME
    • Профил
Как да направя Auto increment в PostgreSQL
« Отговор #3 -: Jan 16, 2006, 16:56 »
Добре, пробвах го това нещо обаче нещо си гурно не го правя както трябва.
Когато insert-вам пак ми иска да му подам стойност за това поле което съм го дефинирал като SERIAL.

Ползвах изложеният по-горе пример.
Къде бъркам?

ЕДИТ:
Пробвах и следният пример:

CREATE TABLE distributors (
did DECIMAL(3) PRIMARY KEY DEFAULT NEXTVAL(’serial’),
name VARCHAR(40))
);

Същото нещо го правих и със did с SERIAL.
Прочетох много внимателно документацията, за SERIAL има точно този пример и още 1 страница.

Не мога да разбера къде бъркам.
Активен

Указвам помощ за всичко свързано с Fedora и Мандрива.
Може да ме търсите на ICQ.

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Как да направя Auto increment в PostgreSQL
« Отговор #4 -: Jan 16, 2006, 17:41 »
Ако прочетеш внимателно какво е написал free_did, ще забележиш, че има два вариянта:

1. задаваш като тип на полето SERIAL
Цитат
CREATE TABLE tablename (
   colname SERIAL
);


2. създаваш ръчно sequence и закачаш колоната към него чрез default value

Цитат
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
   colname integer DEFAULT nextval('tablename_colname_seq''<img'> NOT NULL
);


Ти си направил някакъв хибрид м/у двете...
Активен

mhydra

  • Напреднали
  • *****
  • Публикации: 715
  • Distribution: Fedora, Mandriva
  • Window Manager: GNOME
    • Профил
Как да направя Auto increment в PostgreSQL
« Отговор #5 -: Jan 18, 2006, 08:38 »
Благодаря на всички взели участие и помогнали ми с отговор хора.
Оправих проблема.
Активен

Указвам помощ за всичко свързано с Fedora и Мандрива.
Може да ме търсите на ICQ.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
PostgreSQL заявка
Общ форум
madmak 0 1798 Последна публикация Sep 20, 2004, 13:24
от madmak
MySQL vs. PostgreSQL
Общ форум
HammerFall_ 23 11461 Последна публикация Apr 14, 2005, 09:39
от BULFON
PostgreSQL 8
Настройка на програми
ellmo 3 2257 Последна публикация Jun 10, 2005, 19:24
от
Как да видя наличните таблици в PostgreSQL?
Настройка на програми
mhydra 11 4599 Последна публикация Nov 01, 2005, 16:13
от mhydra
Как да видя базите данни и таблиците с PostgreSQL
Web development
mhydra 4 2932 Последна публикация Nov 02, 2005, 10:01
от mhydra