SQLite如果列存在

Nat*_*han 21 database sqlite

我想知道在SQLite中检查列和索引是否有一个很好的IF NOT EXISTS,或者我是否需要恢复整个数据库模式并对其进行验证?

小智 36

有一个名为sqlite_master的系统目录表,可用于检查索引(或其他)名称:

SELECT name FROM sqlite_master WHERE type='index' ORDER BY name;
Run Code Online (Sandbox Code Playgroud)

您可以使用pragma获取索引列:

PRAGMA index_info(index-name);
Run Code Online (Sandbox Code Playgroud)

这一个用于获取表的列名:

PRAGMA table_info(table-name);
Run Code Online (Sandbox Code Playgroud)


Bri*_*ndy 8

是的,sqlite支持以下语法: CREATE INDEX IF NOT EXISTS ...

看这里

要检查列的存在,您可以尝试执行类似的操作SELECT col from TABLE.如果它没有返回表中包含的错误col.