Postgresql
如何在 PostgreSQL 中選擇“實例”?
我正在閱讀 IEEE 的一篇名為“基於觸發器的實時增量提取以支持數據倉庫”的論文,他們提出了以下程式碼:
CREATE TRIGGER cdc_table ON db.table AS DECLARE @OPER, @INST, @TAB, @PK, @ID Select @TAB=table of altered tuple Select @PK= primary key of @TAB Select @INST= instance in which @TAB belongs Begin IF(@OPER = DELETE) Select @ID= ID from tuple before deletion; ELSE Select @ID= ID from tuple after insertion or update; ENDIF Insert into log table @ID, @PK, @TAB, @INST, @OPER; END;
在第 5 行,他們要求我選擇我正在更改的表的實例。我怎樣才能做到這一點?
日誌表定義如下:
- log id——一個整數類型的欄位,有一個序號,儲存操作的執行順序;
- instance – 文本類型欄位,儲存元組被更改的實例的名稱;
- table – 文本類型欄位,儲存元組被更改的表的名稱;
- operation – 儲存已執行的操作類型:INSERT、UPDATE 或 DELETE;
- pk 列——文本類型欄位,儲存在元組被更改的表中用作唯一標識符的列的名稱;
- tuple id – 更改後的元組的唯一標識符的值。
謝謝!
一開始這是一個非常糟糕的主意,您正在重新創建邏輯複製。只需參考PostgreSQL 邏輯複製指南。
也就是說,您想要的是PostgreSQL plpgsql 觸發器“特殊變數.
TG_TABLE_NAME
數據類型名稱;導致觸發器呼叫的表的名稱。TG_TABLE_SCHEMA
數據類型名稱;導致觸發器呼叫的表的模式的名稱。