PostgreSQL INSERT INTO производственный стол ИЗ промежуточного стола - PullRequest
0 голосов
/ 05 декабря 2018

Я создал две таблицы с использованием моделей Django, и сценарии выглядят примерно так

Я использую рабочую таблицу PostgreSQL 10

:

CREATE TABLE public.foods_food(
    id integer NOT NULL DEFAULT nextval('foods_food_id_seq'::regclass),
    code character varying(100) COLLATE pg_catalog."default",
    product_name character varying(255) COLLATE pg_catalog."default",
    brands character varying(255) COLLATE pg_catalog."default",
    quantity character varying(255) COLLATE pg_catalog."default",
    last_modified_datetime timestamp with time zone NOT NULL,
    created_at timestamp with time zone NOT NULL
)

промежуточная таблица:

CREATE TABLE public.foods_temp(
    id integer NOT NULL DEFAULT nextval('foods_temp_id_seq'::regclass),
    code character varying(100) COLLATE pg_catalog."default",
    product_name character varying(255) COLLATE pg_catalog."default",
)

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

INSERT INTO foods_food
   SELECT * FROM foods_temp;

Но я получилэта ошибка.

ERROR:  null value in column "created_at" violates not-null constraint

Я могу задать для столбца created_at принятие пустого значения, чтобы заставить его работать, но я хочу, чтобы значения created_at автоматически заполнялись при вставке записей.

Есть ли другой способ скопировать столбцы в рабочую таблицу и автоматически вставить метку времени?

1 Ответ

0 голосов
/ 05 декабря 2018

Затем вам нужно установить значения по умолчанию:

ALTER TABLE public.foods_food ALTER last_modified_datetime
   SET DEFAULT current_timestamp;
ALTER TABLE public.foods_food ALTER created_at
   SET DEFAULT current_timestamp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...