2012-10-21 72 views
0

我想創建一個處理表中某個列的觸發器。SQLite如果列存在解決方案?

如果這樣的列不存在,觸發器必須處理會發生的錯誤。

可能嗎?我沒有這樣的解決方案搜索網頁,因爲「if exists」命令在SQLite中不存在。

編輯:爲觸發(在註釋請求) 例子:

CREATE TRIGGER trigger_name 
    AFTER UPDATE ON table_1 
    BEGIN 
     IF exist (select col_1 from table_1) 
      BEGIN 
      update table_1 set col_1='1' where id = '2' 
      END 
    END 

如果COL_1不存在,它會使一個錯誤。

+0

你能提供一個觸發這個觸發器的查詢的例子嗎? – 2012-10-21 11:42:31

+1

當然,我提供了一個例子。 –

回答

2

在SQLite中,triggers can execute only normal SELECT/INSERT/UPDATE/DELETE commands;沒有任何編程結構像IF

如果你想執行動態代碼,你必須註冊自己的用戶定義函數(如何做到這一點取決於你所使用的語言/驅動器),並且從觸發調用它:

CREATE TRIGGER name 
AFTER UPDATE ON table_1 
BEGIN 
    SELECT my_custom_function(); 
END 

在您的函數中,您可以使用PRAGMA table_info查詢來檢查表結構並執行UPDATE查詢。

+0

我不明白。在DB中我可以寫一個函數? –

+1

要重複一遍:這取決於您使用的語言/驅動程序。 –