嘿,所以我试图创建一个基于已经存在的新记录,但我很难确保此记录不存在。数据库存储事务的详细信息,并有一个是否重复的字段。SQLite创建一个新记录,如果它不存在
我使用
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)
但这显然把两个表,虽然他们被加入了,它不记录追加到表的底部,这将让我组。
我一直在努力奋斗几天,所以任何帮助将不胜感激!
编辑: 该文档说“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
你有什么标准检查“此记录已存在”?您需要根据此标准创建唯一的约束。 – Arvo
唯一的约束必须是所有的列都可以是非唯一的,但是如果除了'date'以外的所有列都与另一个记录相同,那么'date'列在记录子集中必须是唯一的, date'。如果这是有道理的... – Josh
完全没有任何意义。请参阅上面的编辑2。 – Josh