1. 程式人生 > 資訊 >推特前 CEO:推特所有者變更或影響 Bluesky 融資

推特前 CEO:推特所有者變更或影響 Bluesky 融資

Mysql觸發器

1、1 觸發器定義

​ 觸發器是由事件來觸發某個操作, 事件包括 insert update delete事件,

優勢:

  1. 保證資料完整性。
  2. 觸發器可以幫助記錄操作日誌
  3. 觸發器可以用在操作資料前,對資料進行合法性檢測

劣勢:

  1. 可讀性差。由於觸發器是由事件驅動,不受應用層控制。對系統維護不友好
  2. 相關資料表結構的變更,有可能會導致觸發器錯誤。

1、2 觸發器使用

  • 建立觸發器

    # 觸發器建立語法
    CREATE TRIGGER name
    {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名
    FOR EACH ROW
    觸發執行的語句塊
    
     #錯誤程式 固定格式
    SIGNAL SQLSTATE "錯誤碼" SET MESSAGE_TEXT = '錯誤資訊'
    
    
    # 舉例
    DELIMITER //
    CREATE TRIGGER trigger_insert_live
    AFTER INSERT ON nlsg_live
    FOR EACH ROW
    BEGIN
    	# 自定義錯誤流程判斷
    	IF NEW.id > 10 
    		THEN SIGNAL SQLSTATE "HY001" SET MESSAGE_TEXT = 'error id > 10'; #自定義校驗
    	END IF;
    	INSERT INTO nlsg_live_info(live_pid) VALUE(NEW.id);  #NEW 為當前insert 資料物件
    END //
    DELIMITER ;
    

    說明:

    • BEFORE|AFTER 表示事件觸發時間。BEFORE在事件之前觸發 AFTER在事件之後觸發。

    • 表名 :表示觸發器監控物件。

    • {INSERT|UPDATE|DELETE} : 表示觸發事件。

    • 語句塊 : 可以是單條 也可以是由BEGIN...END 結構組合的複合語句。

      • 自定義錯誤程式: SIGNAL SQLSTATE "錯誤碼" SET MESSAGE_TEXT = '錯誤資訊';
      • NEW : 關鍵字new為觸發事件(insert|update)資料的物件。
      • OLD : 關鍵字 為delete事件資料的物件 OLD值因為是刪除操作,所以全部是隻讀的。
  • 檢視觸發器

    #方式一  檢視當前資料庫觸發器資訊
    SHOW TRIGGERS;
    #方式二  檢視當前資料庫某個觸發器資訊
    SHOW CREATE TRIGGER trigger_name;
    #方式三   檢視系統庫所有的觸發器資訊
    select * from information_schema.TRIGGERS;
    
  • 刪除觸發器

     #方式一
    DROP TRIGGER trigger_name;
     #方式二。 檢索後刪除   推薦使用
    DROP TRIGGER IF EXISTS trigger_name;