Я хотел бы изменить столбец типа double для ввода числового значения в базе данных postgres. Мой вопрос: будут ли какие-либо меры предосторожности или проблемы, на которые мне нужно обратить внимание до или после внесения этого изменения? Спасибо, что нашли время ответить на этот вопрос.

2
Nanthini Muniapan 18 Мар 2011 в 10:01
В зависимости от числового диапазона/точности и значений/в двойных числах возможна потеря данных. (Двойники имеют большую точность при меньших значениях).
 – 
user166390
18 Мар 2011 в 10:04
Что, если бы я не указал диапазон/точность, когда я не выполняю преобразование типа, то есть я просто выполняю этот оператор sql: - ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца TYPE numeric. Какова точность по умолчанию, в которую система базы данных преобразует столбец. Информация таблицы не отображает точность. Что я заметил, так это то, что когда я выполнял SELECT SUM(column_name) FROM table_name, была очень небольшая разница в терминах с плавающей запятой, число выше, когда столбец имел тип double по сравнению с числовым.
 – 
Nanthini Muniapan
18 Мар 2011 в 10:40
2
мне кажется, Postgres сохраняет тип данных насквозь (например, он не преобразует двойные числа в Numerics внутри, поэтому возникают стандартные ошибки IEEE с плавающей запятой введены в промежуточном суммировании). Postgres должен соблюдать числовую точность при выполнении математических операций (во всяком случае, я думаю - 1/3==?). Без указания диапазона/точности в NUMERIC он будет адаптироваться для хранения любого диапазона/точности. См. PostgreSQL Numeric. также означает, что удвоения могут быть быстрее, fsvo "быстрее".
 – 
user166390
18 Мар 2011 в 10:49

1 ответ

Насколько велик ваш стол? Это перепишет всю вашу таблицу. Если ваша таблица такая большая, выполнение «Alter commond» займет так много времени, что это болезненно для вашего приложения! Надеюсь, что это поможет вам .

1
francs 18 Мар 2011 в 10:16