考虑一个数据库,它为目录树建模,每个文件或文件夹都是一条记录:
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,但这不是很优雅。还有另一种方法可以做到这一点吗?