如何检查SQLite 3 DB表是否有架构,如果没有将其与新架构合并?

时间:2012-09-13 02:00:31

标签: sql c sqlite database-design

假设我们创建了简单的数据库表,如:

CREATE TABLE IF NOT EXISTS users (email varchar(100) UNIQUE NOT NULL primary key, pass varchar(100))

现在我们希望CREATE TABLE IF NOT EXISTS or merge with previous one看起来像

users (email varchar(100) UNIQUE NOT NULL primary key, name varchar(100))

因此,如果表存在,我们要删除传递列并添加名称列。

是否可以通过SQL命令和SQLite编译指示或使用C SQLite api如何实现?

1 个答案:

答案 0 :(得分:1)

As it turns out,在SQLite中,如果要删除单个列,则必须重新创建整个表。提供链接的示例非常好 - 您可能想要调整它以满足您的需求。

这就是我想出来的。

CREATE TEMPORARY TABLE users_1(email varchar(100) unique not null primary key, user varchar(100));
INSERT INTO users_1 SELECT email, '' FROM users;
DROP TABLE users;
CREATE TABLE users(email,user varchar(100));
INSERT INTO users SELECT email, user FROM users;
DROP TABLE users_1;