在Linux環境下使用Informix數據庫的觸發器,可以按照以下步驟進行:
觸發器定義:
觸發時機:
BEFORE:在觸發事件之前執行。AFTER:在觸發事件之后執行。CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN ATOMIC
-- 觸發器的邏輯代碼
END;
假設我們有一個名為employees的表,我們希望在插入新員工記錄之前檢查員工的年齡是否大于18歲。
CREATE TRIGGER check_employee_age
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN ATOMIC
IF NEW.age < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Employee must be at least 18 years old.';
END IF;
END;
SELECT * FROM sysobjects WHERE type = 'TR';
DROP TRIGGER trigger_name;
先刪除舊觸發器,再創建新觸發器。
DROP TRIGGER check_employee_age;
CREATE TRIGGER check_employee_age
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN ATOMIC
IF NEW.age < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Employee must be at least 18 years old.';
END IF;
END;
DBMS_TRIGGERS視圖來查看觸發器的定義和狀態。假設我們希望在更新員工表時,自動更新員工的最后修改時間。
CREATE TRIGGER update_employee_last_modified
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN ATOMIC
UPDATE employees
SET last_modified = CURRENT TIMESTAMP
WHERE employee_id = NEW.employee_id;
END;
通過以上步驟,你可以在Linux環境下使用Informix數據庫的觸發器來實現各種自動化的數據驗證和處理邏輯。