ВСТАВИТЬ В БД однозначно с помощью PostgreSQL - PullRequest
3 голосов
/ 07 августа 2009

Мой стол

  question_id   |              title              |      user_id   |
+---------------+---------------------------------+----------------+

Его типы

                Column                 |            Type             |                            Modifiers                            
---------------------------------------+-----------------------------+-----------------------------------------------------------------
 question_id                           | integer                     | not null default nextval('questions_question_id_seq'::regclass)
 title                                 | character varying(256)      | 
 user_id                               | integer                     | 

Я бегу

INSERT INTO questions VALUES (SERIAL, 'question title', 123);

Я получаю ошибку об использовании SERIAL.

Как вы можете добавить вопрос в таблицу, автоматически получая уникальный вопрос_id от PostgreSQL?

Ответы [ 3 ]

14 голосов
/ 07 августа 2009

ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, которое у вас есть, автоматически сгенерирует (серийный) номер из последовательности, которая находится в вашей базе данных. Так что вы можете просто сделать:

insert into questions (title, user_id) values ('question_title', 123);

В поле question_id из-за последовательности ** questions_question_id_seq ** будет вставлено число AUTO INCREMENTED.

В качестве альтернативы, вместо использования SERIAL, в вашем предложении вставки, вы также можете использовать последовательность. Но я бы предпочел использовать первое предложение, которое я предложил:

insert into questions values (nextval('questions_question_id_seq'), 'question_title', 123);
2 голосов
/ 07 августа 2009

Вы также можете создать таблицу, используя

Create Table tbl_1 ( id SERIAL , name varchar(30));

Вы можете продолжать вставлять данные как

insert into tbl_1(name) values('xyz');

Это создаст идентификатор автоматически. Использование Serial эквивалентно только последовательности. Вы можете проверить текст ссылки

2 голосов
/ 07 августа 2009

Обычно , вам не нужно указывать уникальный идентификатор, так как это делается на стороне сервера. Вы должны использовать следующее:

INSERT INTO questions (title, user_id) VALUES ('question title', 123);

Автоматическая обработка идентификатора выполняется последовательностью 'questions_question_id_seq', как вы можете видеть в разделе модификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...