【发布时间】:2020-09-28 22:13:08
【问题描述】:
考虑一个数据库,它为目录树建模,每个文件或文件夹都是一条记录:
CREATE TABLE "tree" (
"id" integer,
"parent_id" integer,
"name" varchar(255),
UNIQUE("parent_id","name"),
PRIMARY KEY("id"),
FOREIGN KEY("parent_id") REFERENCES "tree"("id") on delete cascade
);
根节点的 parent_id 设置为 NULL,因为它没有父节点。 为了优化运行时,我想创建一个准备好的语句来查询树:
select * from tree where name=? and parent_id=?
问题是上面的语句即使我调用 sqlite3_bind_null,select 语句也不会找到 parent_id 为 NULL 的行。它仅适用于参数parent_id is null。
目前准备了两个语句:一个用于 NULL,一个用于 != NULL,但这不是很优雅。 有没有其他方法可以做到这一点?
【问题讨论】:
标签: c++ c sqlite where-clause sql-null