MYSQL觸發器

建立一個表

CREATE TABLE cmd (
        id INT PRIMARY KEY auto_increment,
        USER CHAR (32),
        priv CHAR (10),
        cmd CHAR (64),
        sub_time datetime, #提交時間
        success enum ('yes', 'no') #0代表執行失敗
);

建立一個要被觸發的表

CREATE TABLE errlog (
        id INT PRIMARY KEY auto_increment,
        err_id int
);

建立觸發器

delimiter $$  #把;變換成$$,讓下面的代碼完整運行
CREATE TRIGGER tri_after_insert_cmd AFTER INSERT ON cmd FOR EACH ROW
BEGIN
        if NEW.success = 'no' then   # NEW(新的信息,也就是插入cmd的信息)
                insert into errlog(err_id) values(NEW.id);  # 插入語法.當上面的條件成立
        end if;
END $$  # 製造觸發器完畢
delimiter ; # 將符號還原成;

插入數據

INSERT INTO cmd (
        USER,
        priv,
        cmd,
        sub_time,
        success
)
VALUES
        ('egon','0755','ls -l /etc',NOW(),'yes'),
        ('egon','0755','cat /etc/passwd',NOW(),'no'),
        ('egon','0755','useradd xxx',NOW(),'no'),
        ('egon','0755','ps aux',NOW(),'yes');

刪除觸發器

drop trigger tri_after_insert_cmd;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章