Как я могу установить значение по умолчанию всех столбцов равным нулю в PostgreSQL - PullRequest
1 голос
/ 02 марта 2011

Я хотел бы установить значение по умолчанию для каждого столбца в количестве таблиц, равное Null. Я могу просмотреть ограничение по умолчанию в разделе information_schema.columns.column_default. Когда я пытаюсь бежать update information_schema.columns set column_default = Null where table_name = '[table]' выдает «ОШИБКА: невозможно обновить представление». СОВЕТ: Вам необходимо безусловное правило ON UPDATE DO INSTEAD. »

Как лучше всего это сделать?

1 Ответ

1 голос
/ 02 марта 2011

Вам необходимо запустить оператор ALTER TABLE для каждого столбца.Никогда не пытайтесь делать что-то подобное, манипулируя системными таблицами (даже если вы найдете правильную - INFORMATION_SCHEMA содержит только представление о реальных системных таблицах)

Но вы можете сгенерировать все необходимые операторы ALTER TABLE на основеданные в представлениях information_schema:

SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' SET DEFAULT NULL;'
FROM information_schema.columns
WHERE table_name = 'foo';

Сохраните выходные данные как сценарий SQL, а затем запустите этот сценарий (не забудьте зафиксировать изменения)

...