2013-03-08 2 views
3

Недавно я работаю с postgresql-9.1.Как назначить тип данных десятичным для столбца в Postgresql?

По какой-то причине я должен использовать технологию, которая не поддерживает тип данных числовой, но десятичной. К сожалению, тип данных столбцов, которые я назначил десятичным для них в моем Postgresql, всегда является числовым. Я попытался изменить тип, но это не сработало, хотя у меня есть сообщения так же, как «Запрос вернулся успешно без результата в 12 мс».

Итак, я хочу знать, как я могу получить столбцы десятичными.

Любая помощь будет высоко оценена.

например.

Мои создания статьи:

CREATE TABLE IF NOT EXISTS htest 
(
    dsizemin decimal(8,3) NOT NULL, 
    dsizemax decimal(8,3) NOT NULL, 
    hidentifier character varying(10) NOT NULL, 
    tgrade character varying(10) NOT NULL, 
    fdvalue decimal(8,3), 
    CONSTRAINT htest_pkey PRIMARY KEY (dsizemin , dsizemax , hidentifier , tgrade) 
); 

Мои изменяющие пункты:

ALTER TABLE htest 
ALTER COLUMN dsizemin TYPE decimal(8,3); 

Но это не работает.

+3

[«Типы« десятичные »и« числовые »эквивалентны»] (http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL). Проблема в том, что этот инструмент запрашивает базу данных для схемы таблицы и не понимает числовое значение, возвращаемое при создании столбца «decimal»? –

+3

'decimal' - это просто псевдоним для' numeric', чтобы программы, написанные для Oracle, были немного счастливее. Это не похоже на то, что вы можете сделать его «реальным» псевдонимом с «DOMAIN», поэтому я подозреваю, что вам не повезло, если вы не можете заставить программу справиться с метаданными таблицы, показывающей «числовые», где она ожидает «десятичную '. Попробуйте 'SELECT '1' :: decimal;' чтобы увидеть, что я имею в виду. –

+0

@muistooshort: Да, инструмент не понимает числовые, так грустно. – Xing

ответ

4

В PostgreSQL «десятичный знак» является псевдонимом для «числового», что создает некоторые проблемы, когда ваше приложение считает, что он ожидает тип, называемый «десятичным» из базы данных. Как отметил Крейг выше, вы даже не можете создать домен под названием «десятичный»

В базе данных нет хорошего обходного пути. Единственное, что вы можете сделать, это изменить приложение, чтобы оживить числовой тип данных.

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