這情況是一個我沒有特別發現,但是當出現錯誤時卻花了大把的時間 trace & debug 的事…
事由:
我有兩個表,就叫 a 跟 b 好了
a {
`id`: big integer, auto_increment, primary key,
`sn`: varchar(50), utf8mb4_bin, unique key
}
b {
`id`: big integer, auto_increment, primary key,
`a_id`: big integer, foreign key references `a`.`id`,
`sn`: varchar(50), utf8mb4_unicode_ci, unique key
}
我是後面接手維護的,我進行調整 a/b 表的 sn 的計算,利用 mysql trigger before insert 的時候去計算新的 sn,計算的操作是特別為了 a 跟 b 表各別寫一個 function 去做,就先叫 func_a 跟 func_b 好了
因為 b 跟 a 表的關係,所以 b.sn 的編碼格式中是有用到 a.sn 的,所以在 func_b 中,是要先以 NEW.`a_id` 到 a 表查 a.sn 後再回來用 a.sn 來串出 b.sn