Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли юзать функции в констрейнтах? / 5 сообщений из 5, страница 1 из 1
28.11.2005, 17:10
    #33404122
whirlwind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли юзать функции в констрейнтах?
Сабж не предусмотрено, или я все таки неправильно пишу. Например

CONSTRAINT test_num_field_num_scale_dec CHECK (test_num_field=round(test_num_field,2))
...
Рейтинг: 0 / 0
29.11.2005, 03:47
    #33404720
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли юзать функции в констрейнтах?
Можно, и иногда даже необходимо - потому что подзапросы в постгресе в CHECK делать нельзя пока.
Возможно проблема в том, что round() требует первым аргументом numeric, а тип поля real или double precision - судя по тому, что требуется проверка. Лучше бы объявить поле как numeric(xx,2) - тогда и констрейнт не нужен.
...
Рейтинг: 0 / 0
30.11.2005, 09:43
    #33407529
whirlwind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли юзать функции в констрейнтах?
Не, поле numeric. Просто хочу использовать постгрес по максимуму. То, что инсерт или апдейт обрезает - это не хорошо. Очень важно правильно интерпретировать значение если например считаются деньги. Конечно, перед запросом есть валидатор, но если как дополнительная защита будет фигурировать констрейнт, это будет гораздо надежнее.

И еще такой вопрос. А как использовать регулярки для констрейнтов на не текстовые поля?
...
Рейтинг: 0 / 0
30.11.2005, 10:08
    #33407606
whirlwind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли юзать функции в констрейнтах?
ЗЫ. По поводу первого поста. Наверное все-таки я туплю. Скорее всего test_num_field в чеке уже обрезано по формату numeric, по этому и констрейнт никогда не срабатывает. Я прав?
...
Рейтинг: 0 / 0
01.12.2005, 03:32
    #33409976
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли юзать функции в констрейнтах?
whirlwind
И еще такой вопрос. А как использовать регулярки для констрейнтов на не текстовые поля?
Код: plaintext
1.
CHECK (field1::text ~ '^-?\\d+(\\.\\d{1,2})?$'))
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли юзать функции в констрейнтах? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]