在更改表之前检查列是否存在

时间:2013-07-14 11:11:30

标签: sql sqlite

我该如何执行这样的查询?这是一个添加新列的示例查询。

ALTER TABLE [users] ADD COLUMN [description] VARCHAR(255) NOT NULL DEFAULT ''

每当再次执行该查询时,都会产生以下错误。

  

SQLiteManager:可能的SQL语法错误:ALTER TABLE [users] ADD   COLUMN [description] VARCHAR(255)NOT NULL DEFAULT''[复制   列名:描述]异常名称:NS_ERROR_FAILURE异常   消息:组件返回失败代码:0x80004005   (NS_ERROR_FAILURE)[mozIStorageConnection.createStatement]

如果可能的话,我想消除这个错误。例如,以下查询在多次执行时不会产生任何错误。

CREATE TABLE IF NOT EXISTS [users] ([id_users] INTEGER PRIMARY KEY AUTOINCREMENT)

但SQLite在查询开始时不支持IF条件,所以我几乎无能为力。我也尝试过使用CASE表达式,但失败了。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

使用单个ALTER TABLE语句无法执行此操作。

您可以使用其他命令(例如PRAGMA table_info(users))检查列是否存在。