2013-12-11 68 views
0

我想觸發一個基於插入的where子句到不同表的更新。例如:我可以訪問SQLite觸發器中where子句的值嗎?

CREATE TRIGGER update_key_table 
BEFORE INSERT ON value_table 
BEGIN 
    INSERT OR IGNORE INTO key_table (key_name) VALUES ('new_key_name'); 
END; 

這將更新key_table與價值「new_key_name」當下面的查詢運行:

INSERT INTO value_table (key_id, value) 
SELECT key_table.key_id, 'new_value' 
FROM key_table 
WHERE key_table.key_name = 'new_key_name'; 

但是,我一直沒能找到任何方式來獲得訪問觸發查詢的WHERE子句中的'new_key_name'值。

我明白,我可以只按順序運行以下兩個查詢,這純粹是在這個特定的應用不便:

INSERT OR IGNORE INTO key_table (key_name) VALUES ('new_key_name'); 

INSERT INTO value_table (key_id, value) 
SELECT key_table.key_id, 'new_value' 
FROM key_table 
WHERE key_table.key_name = 'new_key_name'; 

回答

1

一個INSERT觸發器可以在新的記錄,只能訪問值插入。

您必須分別執行這兩個查詢。

或者,如果你可以修改所有的應用程序,你可以創建包含全部三列(key_idvaluekey_name)的視圖,並創建一個執行兩個「真正的」插入一個INSTEAD OF觸發器。

+0

我認爲觀點的想法解決了我的問題。謝謝。 – vamin

相關問題