Титла: Как да направя Auto increment в PostgreSQL Публикувано от: mhydra в Jan 16, 2006, 14:21 Предварително се извянявам за глупавият въпрос който задавам обаче обиколих всички ръководства които успях да намеря и никъде не успях да намеря решение на проблема си.
Въпросът ми е следният: Имам база данни на 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' ); А искам текушият номер на първичния ключ сам да се увеличава. Надявам се че разбрахте каква ми е целта. Титла: Как да направя Auto increment в PostgreSQL Публикувано от: в Jan 16, 2006, 14:50 ами в документацията си го пише :-)
http://www.postgresql.org/docs....-SERIAL нещото, което се използва се казва sequence, и от няколко версии насам са направили лесно свързване на конкретна колона със sequence, чрез псевдо типа SERIAL може да огледаш документацията и какво всъщност е sequence Титла: Как да направя Auto increment в PostgreSQL Публикувано от: в 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' ![]() ); ..." Титла: Как да направя Auto increment в PostgreSQL Публикувано от: mhydra в 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 страница. Не мога да разбера къде бъркам. Титла: Как да направя Auto increment в PostgreSQL Публикувано от: Hapkoc в Jan 16, 2006, 17:41 Ако прочетеш внимателно какво е написал free_did, ще забележиш, че има два вариянта:
1. задаваш като тип на полето SERIAL
2. създаваш ръчно sequence и закачаш колоната към него чрез default value
Ти си направил някакъв хибрид м/у двете... Титла: Как да направя Auto increment в PostgreSQL Публикувано от: mhydra в Jan 18, 2006, 08:38 Благодаря на всички взели участие и помогнали ми с отговор хора.
Оправих проблема. |