[英]SQLite create a new record if it doesn't exist
嘿,所以我試圖根據一個已經存在的記錄創建一個新記錄,但是我很難確保該記錄不存在。 該數據庫存儲交易的詳細信息,並具有一個是否重復的字段。
我正在使用生成新日期
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約束”。 根據定義,我無法在表上具有唯一約束,因為我必須為具有新日期的新交易創建完全相同的記錄。 還是我誤解了?
編輯2:
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
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
。 參見文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.