Предполагая, что вы хотите установить единый лимит расходов на категорию, вы можете сделать категорию столбцом УНИКАЛЬНЫЙ . Тогда дублированная категория приведет к конфликту, и будут предприняты действия конфликта, такие как OR REPLACE
.
например. Учтите следующее: -
DROP TABLE IF EXISTS spending_limits;
CREATE TABLE IF NOT EXISTS spending_limits (category INTEGER UNIQUE NOT NULL, spending_limit REAL);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(1,10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(2,10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(3,10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(4,10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(5,10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES('Animal',10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES('Vegetable',10.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES('Mineral',10.23);
SELECT *,rowid AS rid FROM spending_limits;
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES(1,11.23);
INSERT OR REPLACE INTO spending_limits (category, spending_limit) VALUES('Animal',11.23);
SELECT *,rowid AS rid FROM spending_limits;
Это будет: -
- УДАЛИТЬ таблицу расходов_лимитов , если она существует (упрощает тестирование)
- СОЗДАЙТЕ таблицу расходы_лимитов , отмечая, что столбец категории имеет атрибут UNIQUE .
- ВСТАВИТЬ 8 строк в таблицу расходов_лимитов (смешанные типы категорий для демонстрационных целей)
- ВЫБРАТЬ все строки и выводить их
- ВСТАВИТЬ 2 повторяющихся строки, в соответствии с категорией, но с установленным количеством.
- т.е. инструкция вставляет новую строку или заменяет существующую строку в зависимости от того, существовала ли категория.
- ВЫБЕРИТЕ все строки и выведите их.
Результаты: -
После первоначальной вставки 8 строк: -
![enter image description here](https://i.stack.imgur.com/a7Uxc.jpg)
После вставки (замены) двух строк, которые имеют существующие категории: -
![enter image description here](https://i.stack.imgur.com/SHAs6.jpg)
- Примечание Также обновляется столбец rowid (поэтому он может быть кандидатом на то, чтобы быть таблицей БЕЗ ROWID)