2010-12-02 25 views

回答

5

AFAIK,你不能傳遞參數,但你可以得到你想要的這個想法一個什麼:

  • 如果你的客戶,你有興趣在特定的記錄事件,可以追加更改記錄的ID併發布該事件。客戶使用感興趣的特定ID註冊感興趣的事件。參見示例1.
  • 如果您的前端對所有更改感興趣,但您想知道哪些特定記錄已更改,則可以將這些記錄「標記」爲「最近更改過」(使用同一記錄上的另一個字段或例如細節表)。在客戶端通知和動作它恢復或清除標誌。例如,這種方法可以使用輔助表來跟蹤特定客戶端的缺失記錄,這取決於您的需求。

實施例1個

begin 
    if (new.phone_ext <> old.phone_ext) then 
    post_event 'phone_ext_changed_'||new.ID; 
end 

實施例我使用都與在不同的應用/情況成功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 

+0

謝謝,第2點是我所需要的。我想我將使用專用表來防止修改記錄本身,然後使用id查詢表以使用所需字段更新客戶端。 – 2010-12-02 18:41:42

0

可以按如下方式使用它:

  1. 設置在觸發情境變量並在其中放置所需的信息。

例:

Create trigger evento_ai0 for evento 
active after insert position 0 
AS 
BEGIN 
Post_Event 'Evento_inserido'; 

「創建上下文variavble」

rdb$set_context('USER_SESSION', 'REGISTRO' , 'Registro inserido: '||new.eve_id); 
END 
  • 要捕獲保存的信息使用:

    Select rdb$get_context('USER_SESSION', 'REGISTRO') from rdb$database;

  • 相關問題