在sqlite中如果在表中不存在相同的列,那么如何在表中添加列

当且仅当表中不存在相同的列时,如何在SQLite表中添加列?

使用ALTER TABLE我能够创建一个新列,但想知道如何检查该列是否已经存在于表中?


您可以使用'.schema tableName'查看表格列


如果表不包含列,SQLite会返回一个错误,如“没有这样的列:foo”:

  select foo from yourTable limit 1

你也可以得到create-table语句:

 select sql from sqlite_master where tbl_name = 'YourTableName'

然后解析结果,查找列名。 我不知道一个优雅的方式来查询指定表的列表的列表,虽然可能存在。

另外如果你尝试这样做:

alter table YourTable add column foo {column-def whatever it is}

如果该列已经存在,则会从SQLite中收到错误。 你也可以捕获这个错误。

最后你可以这样做:

  select sql from sqlite_master 
  where tbl_name = 'YOURTABLE' and sql like '%"foo" CHAR%';    -- or whatever type

并且如果指定的表包含查询中由双引号括起来的列以及指定的类型,您将得到一个结果,否则将得到一个空集。 指定数据类型可确保您的LIKE子字符串匹配发生在列名称上。


没有办法(我知道)在单个SQLite查询中完成所有操作。 您必须使用应用程序代码来管理If / Elseness。

检查表是否存在:

select count(*) from sqlite_master where type = 'table' and name = MyTable';

检查列中是否存在列或现在

pragma table_info(thumbnail);

但是,更好的方法可能是基于应用程序维护的模式版本的显式数据库模式更新(例如,要从模式版本1变为2的特定alter table语句):

pragma user_version;
链接地址: http://www.djcxy.com/p/19803.html

上一篇: In sqlite How to add column in table if same column is not exists in table

下一篇: ALTER TABLE ADD COLUMN IF NOT EXISTS in SQLite