Postgres: Как установить ограничение проверки во время обновления?

Один из способов установить ограничение значения - использовать ограничение проверки базы данных:

balance integer CHECK (balance > 0)

Можно ли объявить ограничение во время обновления, например:

UPDATE xx SET balance = balance + 1000 WHERE user_id=$1 CHECK balance > $2

И быть в состоянии сделать это в течение одного запроса.

1 ответ

Вы можете добавить взломать утверждать. Для SQL Server это будет:

UPDATE xx
SET balance = balance + 1000
WHERE user_id=$1
 AND IIF((balance + 1000) > $2, 0, 0/0) = 0

Это вызывает ошибку деления на ноль в случае возникновения проблемы. Это большой взлом, но он может быть полезен в качестве встроенного утверждения.

Другие вопросы по тегам