Телефон: +7 (926) 245-03-63

Как сделать поле auto_increment?

Следующая статья: PHP и MySQL. С чего начать?

Если неохота разбираться в тонкостях:

CREATE TABLE foo (
   id SERIAL,
   …
 );

и всё заработает.

Если есть желание разобраться:

Для генерации «суррогатных» первичных ключей в PostgreSQL используются «последовательности» (SEQUENCE). Вышеприведённый пример на самом деле раскрывается в такую конструкцию:

CREATE SEQUENCE foo_id_seq;
CREATE TABLE foo (
id integer DEFAULT nextval('foo_id_seq'),
…
);
CREATE UNIQUE INDEX foo_id_key ON foo (id);

Если делать ту же работу «вручную», то нагляднее всего (IMHO!) получается так:

CREATE SEQUENCE foo_seq;
CREATE TABLE foo (
id integer NOT NULL DEFAULT nextval('foo_seq'),
…
PRIMARY KEY (id)
);

Если нужно (как чаще всего и бывает), чтобы поле заполнялось автоматически, не надо указывать его в команде INSERT вообще. При попытке вставить туда значение NULL или 0 возникнет ошибка.

Следует отметить: последовательность совершенно не зависит от таблицы, при большом желании можно использовать одну и ту же последовательность для генерации ключей в разных таблицах. Вообще, возможности последовательностей в PostgreSQL значительно шире, чем auto_increment полей в MySQL. Как обычно, читайте документацию.

Интересное в интернете: мини атс мр 16т, ремонт мини атс, форумы по мини-атс