2011-12-02 52 views
1

我有兩個sqlite表,其中一個表有另一個的外鍵。sqlite的計數行INSERT SELECT

CREATE TABLE a (id INTEGER PRIMARY KEY NOT NULL, value TEXT UNIQUE NOT NULL); 
CREATE TABLE b (id INTEGER PRIMARY KEY NOT NULL, a INTEGER REFERENCES a (id) NOT NULL, value TEXT NOT NULL); 

我做的INSERTSELECTb

INSERT INTO b (a, value) SELECT ?value, a.id FROM a WHERE a.value == ?a; 

我怎麼知道一行插入b或不行?爲剛剛插入的值做一個SELECT並檢查它們存在的天氣,似乎效率很低。

回答

2

我希望changes()函數可以幫助你。

()函數返回了 由最近完成的INSERT更改或插入或刪除, DELETE或UPDATE語句的數據庫的行數的變化,獨家下級 觸發器語句。 changes()SQL函數是一個圍繞着C/C++函數的包裝,因此遵循相同的規則來計算變化的計數值 。

因此,如果插入行,則changes()返回1,否則返回0。