Ответ 1
Используя ключевое слово DEFAULT
или опуская столбец из списка INSERT
:
INSERT INTO dataset (id, age, name, description)
VALUES (DEFAULT, 42, 'fred', 'desc');
INSERT INTO dataset (age, name, description)
VALUES (42, 'fred', 'desc');
Моя база данных использует PostgreSQL. В одной таблице используется макрос auto-increment serial
. Если я хочу вставить запись в таблицу, мне еще нужно указать это значение, или она будет автоматически назначена для меня?
CREATE TABLE dataset
(
id serial NOT NULL,
age integer NOT NULL,
name character varying(32) NOT NULL,
description text NOT NULL DEFAULT ''::text
CONSTRAINT dataset_pkey PRIMARY KEY (id)
);
Используя ключевое слово DEFAULT
или опуская столбец из списка INSERT
:
INSERT INTO dataset (id, age, name, description)
VALUES (DEFAULT, 42, 'fred', 'desc');
INSERT INTO dataset (age, name, description)
VALUES (42, 'fred', 'desc');
Если вы создаете таблицу с последовательным столбцом, то, если вы опускаете серийный столбец при вставке данных в таблицу, PostgreSQL будет автоматически использовать последовательность и будет поддерживать порядок.
Пример:
skytf=> create table test_2 (id serial,name varchar(32));
NOTICE: CREATE TABLE will create implicit sequence "test_2_id_seq" for serial column "test_2.id"
CREATE TABLE
skytf=> insert into test_2 (name) values ('a');
INSERT 0 1
skytf=> insert into test_2 (name) values ('b');
INSERT 0 1
skytf=> insert into test_2 (name) values ('c');
INSERT 0 1
skytf=> select * From test_2;
id | name
----+------
1 | a
2 | b
3 | c
(3 rows)