【積累】MySQL觸發器:根據插入的某欄位值自動填寫另一欄位值並儲存
阿新 • • 發佈:2021-01-18
場景:根據使用者填寫的地區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、查詢觸發器自動填入欄位值
【擴充套件】觸發器的檢視和刪除
/**根據觸發器名稱查詢,where限定可省略**/
SELECT * FROM information_schema.`TRIGGERS` WHERE trigger_name ='ceshi';
/**datasource為資料庫名**/
SHOW TRIGGERS FROM datasource;
2、刪除
/**ceshi為triggerName**/
drop trigger ceshi;