1

我有两个 sqlite 表,其中一个表有另一个表的外键。

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);

我正在做INSERT一个SELECTinto b

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

我怎么知道天气一行是否插入到 b 中?为刚刚插入的值做 aSELECT并检查它们存在的天气似乎相当低效。

4

1 回答 1

2

我希望changes()函数可以帮助你。

changes() 函数返回最近完成的 INSERT、DELETE 或 UPDATE 语句更改或插入或删除的数据库行数,不包括低级触发器中的语句。changes() SQL 函数是 sqlite3_changes() C/C++ 函数的包装器,因此遵循相同的规则来计算更改。

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

于 2011-12-03T16:43:39.947 回答