Обновлять столбец, только если новое значение выше - PullRequest
4 голосов
/ 19 июня 2011

Я хочу добавить ограничение, поэтому столбец обновляет свое значение только в том случае, если переданное новое значение больше его текущего значения. В противном случае это следует молча игнорировать. В псевдокоде:

CREATE TABLE t (col INTEGER CHECK (new.value > col.value) ON CONFLICT IGNORE)

SQLite 3.7.4.

1 Ответ

3 голосов
/ 19 июня 2011

Я решил использовать MAX():

UPDATE t SET col = MAX(col, newval) [, col2 = xxx, ...]

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

КогдаПри использовании предложения WHERE для обеспечения соблюдения этого ограничения другие столбцы (например, col2), на которые влияет UPDATE, не будут обновлены, если предложение запретит сопоставление на основе значения col.

Я не смог определить правильный синтаксисдля триггера, чтобы игнорировать ОБНОВЛЕНИЕ, если ограничение было нарушено.В любом случае, я полагаю, что использование триггера потребует гораздо больших затрат, чем простой вызов MAX ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...