Эй, я пытаюсь создать новую запись на основе уже существующей, но у меня возникают проблемы с обеспечением того, что эта запись еще не существует. База данных хранит детали транзакций и имеет поле для повторения.
Я генерирую новые даты, используя
SELECT datetime(transactions.date, '+'||repeattransactions.interval||' days')
AS 'newdate' FROM transactions, repeattransactions WHERE
transactions.repeat = repeattransactions.id
Изначально я хотел бы использовать SELECT
вместо INSERT
только для целей отладки. Я пытался что-то сделать с GROUP BY
или COUNT(*)
, но точная логика ускользает от меня. Так, например, я пытался
SELECT * FROM transactions, (SELECT transactions.id, payee, category, amount,
fromaccount, repeat, datetime(transactions.date,
'+'||repeattransactions.interval||' days') AS 'date' FROM transactions,
repeattransactions WHERE transactions.repeat = repeattransactions.id)
но это, очевидно, обрабатывает две таблицы так, как будто они объединены, и не добавляет записи в конец таблицы, что позволило бы мне сгруппировать.
Я боролся в течение нескольких дней, поэтому любая помощь будет признательна!
EDIT:
В документах сказано: «Предложение ON CONFLICT применяется к ограничениям UNIQUE и NOT NULL». У меня не может быть уникального ограничения для таблицы по определению, так как мне нужно создать точно такую же запись для новой транзакции с новой датой. Или я неверно истолковал это?
EDIT2:
id payee repeat date
1 jifoda 7 15/09/2011
2 jifoda 7 22/09/2011 <-- allowed as date different within subset
3 grefa 1 15/09/2011 <-- allowed as only date is not-unique
4 grefa 1 15/09/2011 <-- not allowed! exactly same as id 3