mysql>delimiter//
mysql>createtrigger TC_ID-> before update->on teacher->for each row->begin->if(IsNum(new.id)=0)then-> SIGNAL sqlstate '45001'set message_text ='No way! You cannot do this!';->endif;->end//
Query OK,0rows affected (0.03 sec)mysql>createtrigger TC_ID_Insert-> before insert->on teacher->for each row->begin->if(IsNum(new.id)=0)then-> SIGNAL sqlstate '45001'set message_text ='No way! You cannot do this!';->endif;->end//
Query OK,0rows affected (0.09 sec)
做好上面的觸發器之后,以后設置關于teacher的插入和更新都需要被保證了。 我們可以做一下測試
mysql>insertinto teacher value('1','Sean','廣州','00000001','男','123')//
Query OK,1row affected (0.01 sec)mysql>insertinto teacher value('2','肥宅Sean','廣州','00000002','男','abc')//
ERROR 1644(45001): No way! You cannot do this!
第二次插入的時候,由于最后的id變成了abc了,不是全部都是數字,所以就不能插入,報錯。
添加id長度為某些固定的數值
這里設置長度也必須要為15位或者是18位
mysql>createtrigger TC_ID_Insert-> before insert->on teacher->for each row->begin->if((length(new.id)!=15and length(new.id)!=18)or IsNum(new.id)=0)then-> SIGNAL sqlstate '45001'set message_text ="No way! You cannot do this!";->endif;->end//
Query OK,0rows affected (0.09 sec)mysql>createtrigger TC_ID-> before update->on teacher->for each row->begin->if((length(new.id)!=15and length(new.id)!=18)or IsNum(new.id)=0)then-> SIGNAL sqlstate '45001'set message_text ="No way! You cannot do this!";->endif;->end//
Query OK,0rows affected (0.04 sec)