當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


PostgreSQL CREATE TRIGGER用法及代碼示例

要在 PostgreSQL 中創建新觸發器,請執行以下步驟:

  • 首先,使用 CREATE FUNCTION 語句創建觸發器函數。
  • 二、通過使用將觸發器函數綁定到一個表創建觸發器陳述。

觸發函數類似於普通函數。但是,觸發器函數不接受任何參數,並且具有觸發器類型的返回值。

下麵說明了創建觸發器函數的語法:

用法:
CREATE FUNCTION trigger_function() 
   RETURNS trigger AS

觸發器函數通過一個稱為 觸發數據,其中包含一組局部變量。 一旦定義了觸發器函數,就可以將其綁定到一個或多個觸發器事件,例如INSERTUPDATEDELETE

例:



我們來看一個創建新觸發器的例子。在這個例子中,我們將創建一個新表公司名稱如下:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

當員工姓名更改時,我們將更改記錄在名為 AUDIT 的單獨表中

CREATE TABLE AUDIT(
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL
);

首先,定義一個名為 auditlog() 的新函數:

CREATE OR REPLACE FUNCTION auditlog() RETURNS TRIGGER AS $example_table$
   BEGIN
      INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$example_table$ LANGUAGE plpgsql;

該函數將舊的姓氏插入到 AUDIT 表中,包括員工 ID、姓氏和更改時間(如果員工的姓氏發生變化)。其次,將觸發器函數綁定到employees 表。觸發器名稱是名稱更改。在 name 列的值更新之前,會自動調用觸發器函數來記錄更改。

 CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlog();

第三,插入一些樣本數據進行測試。我們插入兩行雇員表。

INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (1, 'Raju', 25, 'New-Delhi', 33000.00 );

為了檢查雇員表使用以下查詢:

SELECT * FROM COMPANY;

輸出:

相關用法


注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CREATE TRIGGER。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。