0

SQLite 允许定义可以从 SQL 语句调用的自定义函数。

我正在尝试使用这种机制来获取应用程序中触发活动的通知,例如:

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错误。是否可以仅在定义函数时调用函数?

也赞赏任何替代解决方案。

4

2 回答 2

2

SQLite 被设计为嵌入式数据库,因此假设您的应用程序控制对数据库的操作。

SQLite 没有用于检查用户定义函数的 SQL 函数。

如果您只想检测您自己的程序所做的更改,请使用sqlite3_update_hook

于 2013-03-29T10:35:00.247 回答
1

在调用您的用户定义函数之前,您可以通过从 pragma_function_list 中选择来检查该函数是否存在;

select exists(select 1 from pragma_function_list where name='ChangeNotify');
1
于 2020-06-25T11:54:04.360 回答