2017-03-01 111 views
0

我有4列(ID(自動根),IP,日期,訪問)插入或更新SQLite中

前一個簡單的表:

1,'10 .10.0.10' ,「2017- 03-01',1

我正在尋找插入或更新SQLite需要檢查IP &日期列,如果存在更新訪問+1否則插入一個新行。

我可以發出2個SQL,但想保留在1個SQL中。

這是可能的SQLite嗎?

回答

2

如果您生成IP和日期的潮頭指數可以使用insert or replace語句分兩個步驟來實現:

  1. 嘗試查詢的IP和日期訪問的當前數量;如果沒有找到記錄,則設置爲0。
  2. 執行insert or replace IP和日期(我用在這個例子中命名的參數,你需要將它們綁定到適當值):

    insert or replace into Visits (id, ip, date, visits) 
    values (NULL, :ip, :date, :visits + 1); 
    

您可以將表contstraint增加創建唯一索引就像下面這個例子,或者你使用一個單獨的create unique index聲明:

create table Visits (..., unique (ip, date)); 

附錄:甚至還有更新一個訪問次數的可能性查詢:

insert or replace into Visits (id, ip, date, visits) 
    select NULL, :ip, :date, ifnull(max(visits), 0) + 1 
    from Visits 
    where ip = :ip and date = :date;