嘿所以我正在尝试根据已经存在的记录创建新记录,但是我无法确保此记录不存在。数据库存储事务的详细信息,并具有是否重复的字段。
我正在使用
生成新日期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
答案 0 :(得分:0)
SQLite有重复的特殊DDL语句。像:
create table test(a TEXT UNIQUE ON CONFLICT IGNORE);
insert into test values (1);
insert into test values (1);
select count(*) from test;
1
它也可以是ON CONFLICT REPLACE
。见文档。