2015-10-01 106 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。