переключить логический столбец для всех строк, которые имеют другое значение столбца - PullRequest
0 голосов
/ 10 октября 2019

Предположим, у меня есть следующая таблица Postgres:

id:  PK
foo: boolean
bar: varchar

со следующими псевдоданными:

id|foo|bar
------------------
1 | 1 |watermelon
------------------
2 | 0 |watermelon
------------------
3 | 1 |apple

Я ищу написать триггер SQL - или другой подход, еслиболее применимо - это переключает логический столбец foo для всех строк, имеющих общее значение bar для UPDATE или INSERT, когда значение foo для 1.

Итак, если бы я набрал UPDATE строку PK=2 до foo=1, это бы перевернуло PK=1 на foo=0 на основе их общего значения bar=watermelon (и всех остальных, если больше).

Или, если бы было INSERT (1,apple), это бы перевернуло PK=3 на foo=0 на основе их общего значения bar=apple.

Большое спасибо заранее. Я могу с готовностью увидеть, как это сделать, исходя из своей бизнес-логики, но хотел бы изучить надежный подход на стороне SQL, если это возможно.

...