Предположим, у меня есть таблица типа
CREATE TABLE public.products
(
id INTEGER NOT NULL
article CHARACTER VARYING(255)
name CHARACTER VARYING(255)
quantity NUMERIC(10, 3)
)
Как видите, максимальное значение, которое можно вставить в поле quantity
, равно 9999999
.Если я пытаюсь вставить значение типа 9999999+1
, конечно, я получаю
Числовое значение вне диапазона: 7 ОШИБКА: переполнение числового поля
Есть ли способотслеживать на INSERT
/ UPDATE
, что значение quantity
превышает 9999999
, и вместо этого значения insert
/ update
столбец с 9999999
?
Конечно, NUMERIC(10, 3)
может бытьNUMERIC(10, 2)
или NUMERIC(5, 2)
и так далее, поэтому максимальное значение не должно быть жестко задано в тексте запроса.
В псевдокоде это что-то вроде
UPDATE table SET quantity = IF value > 9999999 THEN 9999999 ELSE value;
КонечноЯ могу выполнить некоторые проверки данных перед запуском pgsql-query, но в настоящее время это последнее решение, которое я могу использовать.