我有一个触发器,可以检测字段PHONE_EXT和POST事件的变化.我想发布带有事件的Phone_ID,以便在客户端中使用此ID.这可能吗?怎么样?
CREATE TRIGGER tr2 FOR employee
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
IF (new.PHONE_EXT <> old.PHONE_EXT) THEN
POST_EVENT 'phone_ext_changed'; <-- I would like to pass a string parameter with record ID
END
Run Code Online (Sandbox Code Playgroud)
AFAIK,您无法传递参数,但您可以通过以下方法之一获得所需内容:
例1
begin
if (new.phone_ext <> old.phone_ext) then
post_event 'phone_ext_changed_'||new.ID;
end
Run Code Online (Sandbox Code Playgroud)
例2
begin
if (new.phone_ext <> old.phone_ext) then
begin
new.recent_ext_change = 1;
/* or maybe */
new.last_ext_change = cast('now' as DateTime);
/* or maybe */
insert into changed_phone_ext values (gen_id(some_generator, 1), New.ID, 'now');
/* finally, post the event */
post_event 'phone_ext_changed_';
end
end
Run Code Online (Sandbox Code Playgroud)
我在不同的应用程序/情况下成功使用它们.