Я новичок в Postgres из MySQL.
Я создал таблицу со столбцом 'col', значение которого по умолчанию равно нулю.
CREATE TABLE widgets (id serial primary key, col bigint default null);
CREATE TABLE
test=# \d+ widgets;
Table "public.widgets"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+-------------------------------------+---------+--------------+-------------
id | integer | | not null | nextval('widgets_id_seq'::regclass) | plain | |
col | bigint | | | | plain | |
Indexes:
"widgets_pkey" PRIMARY KEY, btree (id)
test=#
Однако вВ столбце по умолчанию нет ничего, что указывало бы на то, что это пустое поле.
Должно ли значение по умолчанию показывать как ноль в выходных данных схемы?
Я также пробовал тот же пример выше, но с default 99
.При вводе \d+
в столбце По умолчанию ничего не отображается.В этом примере я вставляю строку, INSERT INTO widgets (id) VALUES (1);
, она получает значение по умолчанию 99
, поэтому я знаю, что используется значение по умолчанию (по крайней мере, для целочисленного значения).Обновление: столбец по умолчанию на самом деле показывает 99. Я использовал \ d + с автозаполнением и просмотрел неверную таблицу.
С default null
, когда я SELECT * FROM widgets
, столбец отображается пустым.
Разве Postgres явно не показывает значение, помеченное как 'null'?Если нет, то как можно различить пустое текстовое поле и поле с нулевым значением?