0

Предположим, у меня есть таблица с именем tracker с колоннами (issue_id,ingest_date,verb,priority)PosgreSQL - Динамическое добавление большого ЧИСЛО столбцов

Я хотел бы добавить 50 столбцов в этой таблице.

Столбцы: (string_ch_01,string_ch_02,.....,string_ch_50) Тип данных varchar.

Есть ли лучший способ добавить столбцы с одной процедурой, а не выполнить следующую команду alter 50 раз?

ALTER TABLE tracker ADD COLUMN string_ch_01 varchar(1020);

+4

Реальный вопрос: почему вы думаете, что вам нужны эти 50 столбцов? В чем проблема, которую вы пытаетесь решить? Последовательно пронумерованные столбцы очень часто указывают на неправильный (де-нормированный) проект базы данных. И этот случай звучит так, как будто вам действительно нужно отношение «один ко многим» –

+0

Я создаю 50 столбцов, потому что мой инструмент дает привилегию создавать свой собственный набор полей. Хорошо, имея (де-нормированный) дизайн базы данных, поскольку это лучший способ для интеллектуального анализа данных. Примечание: Мне нужно только одно к одному. – ramya

+0

Столбец 'hstore' может быть лучшим выбором для этого. –

ответ

0

Да, лучший способ будет выдавать один ALTER TABLE со всеми столбцами сразу:

ALTER TABLE tracker 
    ADD COLUMN string_ch_01 varchar(1020), 
    ADD COLUMN string_ch_02 varchar(1020), 
    ... 
    ADD COLUMN string_ch_50 varchar(1020) 
; 

Это особенно лучше, когда есть УМОЛЧАНИЕ ненулевых положений для новых столбцов , так как каждый из них будет переписывать всю таблицу, а не переписывать ее только один раз, если они сгруппированы в один ALTER TABLE.

+0

Спасибо Даниил. В настоящее время я использую Postgre версии 8.0. Следовательно, приведенный выше код показывает мне синтаксическую ошибку. – ramya

Смежные вопросы