要在 PostgreSQL 中創建新觸發器,請執行以下步驟:
- 首先,使用 CREATE FUNCTION 語句創建觸發器函數。
- 二、通過使用將觸發器函數綁定到一個表創建觸發器陳述。
觸發函數類似於普通函數。但是,觸發器函數不接受任何參數,並且具有觸發器類型的返回值。
下麵說明了創建觸發器函數的語法:
用法: CREATE FUNCTION trigger_function() RETURNS trigger AS
觸發器函數通過一個稱為 觸發數據,其中包含一組局部變量。 一旦定義了觸發器函數,就可以將其綁定到一個或多個觸發器事件,例如INSERT,UPDATE和DELETE。
例:
我們來看一個創建新觸發器的例子。在這個例子中,我們將創建一個新表公司名稱如下:
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;
輸出:
相關用法
- PostgreSQL DROP TRIGGER用法及代碼示例
- PostgreSQL ALTER TRIGGER用法及代碼示例
- PostgreSQL CREATE DOMAIN用法及代碼示例
- PostgreSQL CREATE TABLE用法及代碼示例
- PostgreSQL CREATE SEQUENCE用法及代碼示例
- PostgreSQL CREATE SCHEMA用法及代碼示例
- PostgreSQL CREATE PROCEDURE用法及代碼示例
- PostgreSQL CREATE INDEX用法及代碼示例
- PostgreSQL CREATE ROLE用法及代碼示例
- PostgreSQL CREATE TABLESPACE用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CREATE TRIGGER。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。