Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 维护数据库 » 使用调度和事件自动完成任务 » 了解事件处理程序

 

开发事件处理程序

不管是用于调度事件的处理,还是用于系统事件处理,事件处理程序都包含复合语句,而且在很多方面都与存储过程类似。您可以添加循环、条件执行等,还可以使用 SQL Anywhere 调试程序来调试事件处理程序。

每次执行事件处理程序后,如果没有出现错误便会发生 COMMIT。如果出现错误,则会发生 ROLLBACK。

事件处理程序的上下文信息

与储存过程不同,事件处理程序不带任何参数。可使用 EVENT_PARAMETER 函数访问在其中触发了事件的上下文的相关信息。返回的信息包括导致事件触发的连接 ID 和用户 ID、事件名以及该事件的执行次数。请参见EVENT_PARAMETER 函数 [System]

测试事件处理程序

在开发过程中,您希望在方便时触发事件处理程序。即使在没有出现触发条件或调度时间时,您也可以使用 TRIGGER EVENT 语句显式导致事件的执行。但是,TRIGGER EVENT 不会导致被禁用的事件处理程序执行。请参见TRIGGER EVENT 语句

尽管在生产数据库上开发事件处理程序不是很好的做法,但您可以从 Sybase Central 中,或显式使用 ALTER EVENT 语句来禁用事件处理程序。

代码共享

用同一组操作来处理多个事件是很有用的。例如,如果数据库文件或日志文件所在设备上磁盘空间有限,您可能会需要执行通知操作。为此,创建一个存储过程并在每个事件处理程序的正文中调用它,从而将任何所需的上下文信息作为参数传递给该过程。

调试事件处理程序

调试事件处理程序与调试存储过程非常类似。事件处理程序出现在事件列表中。

有关详细信息和步骤说明,请参见调试事件处理程序

隐藏事件处理程序

可以使用 SET HIDDEN 子句来隐藏某个事件处理程序的定义。指定 SET HIDDEN 子句的结果是永久模糊处理存储在 ISYSEVENT 系统表的操作列中的事件处理程序定义。请参见ALTER EVENT 语句

限制活动事件

通过使用 NumActive 事件参数,您还可以确定某个特定事件处理程序有多少个实例当前处于活动状态。如果您要限制事件处理程序以便在给定的时间只执行一个实例,则此函数是很有用的。

有关 NumActive 事件参数的详细信息,请参见EVENT_PARAMETER 函数 [System]