PostgreSQL Inserting Null работает с использованием COPY, но не с помощью INSERT - PullRequest
0 голосов
/ 16 января 2019

У меня есть столбец bigint с именем mycolumn. Я выполняю сценарии SQL с помощью команды PSQL.

Использование команды COPY:

COPY public.mytable (myothercol, mycolumn) FROM stdin;
1   \N
\.

Это работает. Но следующее не работает:

EXECUTE 'insert into public.mytable (myothercol, mycolumn) values ($1,$2);' USING 
1,NULL;

Это дает мне ошибку:

столбец "mycolumn" имеет тип bigint, но выражение имеет тип text

Почему insert не работает для нулевого значения, тогда как COPY работает?

1 Ответ

0 голосов
/ 16 января 2019

Лучше всего сказать PostgreSQL преобразовать параметр в bigint явно:

EXECUTE 'insert into public.mytable (myothercol, mycolumn) values ($1,$2::bigint);'
   USING 1,NULL;

Проблема в том, что PostgreSQL не знает автоматически, какой тип данных равен NULL, поэтому он угадывает text. COPY не нужно угадывать тип данных.

...