2013-03-29 69 views
0

SQLite允許define custom functions可以從SQL語句中調用。如何在SQLite中調用用戶定義函數?

我想利用這一機制,在我的應用程序得到通知的觸發活動,即是這樣的:

CREATE TRIGGER AfterInsert AFTER INSERT ON T 
BEGIN 
    -- main trigger code involves some extra db modifications 
    -- ... 

    -- invoke application callback 
    SELECT ChangeNotify('T', 'INSERT', NEW.id); 
END; 

然而,用戶定義的函數只添加到當前數據庫連接。可能有其他客戶沒有定義ChangeNotify,我不希望他們得到no such function錯誤。只有定義了函數纔可以調用它?

任何替代解決方案也讚賞。

回答

1

SQLite被設計爲一個嵌入式數據庫,所以假設你的應用程序控制了數據庫的操作。

SQLite沒有SQL函數來檢查用戶定義的函數。

如果要檢測僅從您自己的程序中進行的更改,請使用sqlite3_update_hook

+0

謝謝。如果UDFS只存儲在像sqlite_master這樣的地方,那麼我可能會用'EXISTS'裏面的'CASE'聲明來逃避... –

相關問題