Cof*_*fka 6 t-sql sql-server sqlite
我有 t-sql 插入查询到表 [foo] (bar_id int 主键自动增量,bar_name varchar) 和文本:
INSERT INTO foo(bar_name)
VALUES (@bar_name_new);
IF @@ROWCOUNT > 0
SELECT bar_id, bar_name
FROM foo
WHERE bar_id = scope_identity();
Run Code Online (Sandbox Code Playgroud)
触发器可以在插入后修改 bar_name 字段。这就是为什么我需要刷新“bar_name”字段。现在我需要在 sqlite db 上做同样的事情。我写过这个:
INSERT INTO foo(bar_name)
VALUES (@bar_name_new);
SELECT bar_id, bar_name
FROM foo
WHERE bar_id = (SELECT last_insert_rowid());
Run Code Online (Sandbox Code Playgroud)
我可以检查数据库中调用 sqlite changes() 函数的更改次数。我知道sqlite中的case语句。但是我怎么能告诉sqlite当changes()返回0时不需要做select?
SQLite 的 SQL 风格没有 T-SQL 所具有的分支和循环结构。控制流逻辑在宿主语言中执行。
在您的情况下,您需要sqlite3_changes函数。无论如何,您都需要它来决定是否有任何行要检索。尽管如此,为了方便和高效,where changes() > 0如果(正如我怀疑的那样)查询规划器足够聪明,可以立即返回,您也可以只执行查询。
| 归档时间: |
|
| 查看次数: |
1366 次 |
| 最近记录: |