2015-10-01 76 views
0

我已经看到足够的答案,知道在添加之前无法轻松检查SQLITE中的列。我试图在Node-Red中创建一个懒惰的人的节点,将消息传递给查询的SQLITE。添加一个表如果不存在很容易。有条件地在SQLite中添加列

msg.topic='create table IF NOT EXISTS fred (id PRIMARY KEY);'; node.send(msg); 

它发生,我认为增加一个表,有字段的名称很容易 - 如果字段名不在表....然后添加字段。但你不能一次添加多个领域 - 所以我不能做到这一点...

msg.topic='create table IF NOT EXISTS fred (id PRIMARY KEY, myfields TEXT);'; node.send(msg); 

但问题是,我不能再添加这,有没有办法将前检查表格存在的字段!

这就是我想要

msg.topic='create table IF NOT EXISTS fred (id PRIMARY KEY, myfields TEXT);'; node.send(msg); 

msg.topic='if not (select address from myfields) alter table fred add column address text'; 

我想不出任何办法做到这一点 - 任何想法的人(的想法是,节点红色节点将输入表,字段和值,如果该表不存在它将被创建,如果该字段不存在,它将被创建,所有在尝试添加值之前)。

回答

1

您将无法在SQL本身中创建ALTER TABLE条件。你需要处理你的调用脚本。
或者,只需尝试将列添加到表并接受失败作为结果。假设表存在,唯一可能遇到的失败原因是列已经存在。

如果您想要做更优雅的事情,您可以提前check if the column exists,然后有条件地从您的调用应用程序运行SQL。