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
Это вызывает ошибку деления на ноль в случае возникновения проблемы. Это большой взлом, но он может быть полезен в качестве встроенного утверждения.