msql,觸發器無事物回滾,插入之前滿足條件再插入

2022-09-04 09:54:08 字數 729 閱讀 3271

很少寫mysql的觸發器和儲存過程,由於需要需要做乙個很小的判斷,要用到觸發器,要達到的效果就是,插入之前判斷是否滿足條件如果不滿足就不插入

如果用sqlserver 或者orcale 就很簡單,按sqlserver 和orcale的思路去找事物回滾,或者拋異常,都沒用,最後只有不斷查資料不斷嘗試,只有用mysql的觸發器機制,觸發器中無法修改,刪除原表的值,也無法有返回值

最後**如下

create

trigger `duanxin_before_insert` before insert on `t_duanxin`

for each row begin

declare msgcount int(10);

set msgcount=(select count(*) from t_duanxin where find_in_set(new.to_phone, to_phone) and new.content=content);

if msgcount>0 then

delete from t_duanxin where id=new.id;

end if;

end;

加粗部分是條件判斷不滿足就執行刪除操作,執行刪除就會報錯就不會插入資料

感覺這中方式有搓,就好比在**中手動丟擲異常一樣,一點都不友好.不過沒辦法暫時只有這種實現方式了

觸發器 隱式事物

很簡單 列印出當前連線的活動事務數 create table test1 a int gocreate table test2 b int gocreate trigger tri test on test1 after insert asdeclare a int select a trancou...

oracle的觸發器執行插入

create or replace trigger tr msdata 當插入資料的時候進行運算 before insert on ms realdata1 for each row declare ua number 12,2 a相電壓 ub number 12,2 b相電壓 uc number ...

SQL 觸發器 插入觸發器 邊學邊專案寫的。

需求 專案表專案編碼觸發器編寫 為專案表dwproject編寫觸發器,目的為當建立新專案時,且projectno 為null或空字串時,自動建立專案編號,編號格式為4位年號,2位月份,2位順序號,如20160301。具體要求如下 1 觸發器名稱tig project number。2 僅insert...