1. 程式人生 > 其它 >【積累】MySQL觸發器:根據插入的某欄位值自動填寫另一欄位值並儲存

【積累】MySQL觸發器:根據插入的某欄位值自動填寫另一欄位值並儲存

技術標籤:MySQL學習

場景:根據使用者填寫的地區ID(SUBAREA_ID)自動填寫區域ID(SYSTEM_ID)

/** ceshi:觸發器名稱,自行命名**/
DROP TRIGGER IF EXISTS ceshi;
CREATE  TRIGGER ceshi 
/**datasource.object(庫.表名)**/
BEFORE INSERT  ON datasource.object
FOR EACH ROW  
begin
/**trigger body**/
/**new.system_id:根據new.SUBAREA_ID(使用者填寫的地區ID)限定查詢需自動填寫的欄位**/
set
new.system_id = ( SELECT DISTINCT a.SYSTEM_ID FROM substation a,subsystem b WHERE a.SUBAREA_ID=b.MRID AND a.SYSTEM_ID = b.SYSTEM_ID AND b.MRID =new.SUBAREA_ID ); end;

測試:
1、準備測試MRID
在這裡插入圖片描述
2、知曉SUBAREA_ID和SYSTEM_ID的對應關係,用於測試觸發器的正確與否
在這裡插入圖片描述
3、插入測試MRID,SUBAREA_ID,is_in_use非空欄位值
在這裡插入圖片描述
4、查詢觸發器自動填入欄位值
在這裡插入圖片描述

【擴充套件】觸發器的檢視和刪除

1、檢視:

/**根據觸發器名稱查詢,where限定可省略**/
SELECT * FROM information_schema.`TRIGGERS` WHERE trigger_name ='ceshi';
/**datasource為資料庫名**/
SHOW TRIGGERS FROM datasource;

2、刪除

/**ceshi為triggerName**/
drop trigger ceshi;