问题描述
CREATETABLE`tcckh`(`id`int(11)NOTNULLAUTO_INCREMENT,`bh`varchar(12)NOTNULLDEFAULT''COMMENT'编号',`mc`varchar(30)DEFAULTNULLCOMMENT'名称',`jc`varchar(6)DEFAULTNULLCOMMENT'简称',`mce`varchar(50)DEFAULTNULLCOMMENT'英文名称',`jce`varchar(6)DEFAULTNULLCOMMENT'英文简称',`dz`varchar(40)DEFAULTNULLCOMMENT'地址',`yb`varchar(6)DEFAULTNULLCOMMENT'邮编',`dh`varchar(15)DEFAULTNULLCOMMENT'电话',`lxr`varchar(4)DEFAULTNULLCOMMENT'联系人',`jzzq`tinyint(4)DEFAULT'1'COMMENT'结帐周期,以月为单位',`ffbz`varchar(1)DEFAULT'm'COMMENT'付费标准:m-面积,h-货量',`fl`decimal(10,2)DEFAULT'0.00'COMMENT'费率:元',`fkfs`varchar(1)DEFAULT'y'COMMENT'付款方式:y-预付,h-后付,f-分期付n',`khh`varchar(24)DEFAULTNULLCOMMENT'开户行',`zh`varchar(20)DEFAULTNULLCOMMENT'账户',`zhm`varchar(20)DEFAULTNULLCOMMENT'账户名',`hzdj`tinyint(4)DEFAULT'1'COMMENT'合作等级:1234',`khlx`varchar(1)DEFAULT'd'COMMENT'客户类型:d-大客户,z-中级客户,p-普通客户',`kybj`int(1)DEFAULT'1'COMMENT'0表示已经删除1表示可用',`dbcode`varchar(20)DEFAULTNULLCOMMENT'数据库连接',`hy`char(1)DEFAULT'y'COMMENT'y-医药,p-普货',`inssj`datetimeDEFAULTNULLCOMMENT'创建时间',`insczyid`int(11)DEFAULTNULLCOMMENT'cid',`insczyxm`varchar(4)DEFAULTNULLCOMMENT'创建操作员姓名',`insczyzh`varchar(16)DEFAULTNULLCOMMENT'创建操作员账户',`updsj`datetimeDEFAULTNULLCOMMENT'更新时间',`updczyid`int(11)DEFAULTNULLCOMMENT'更新操作员id',`updczyxm`varchar(4)DEFAULTNULLCOMMENT'更新操作员姓名',`updczyzh`varchar(16)DEFAULTNULLCOMMENT'更新操作员账户',PRIMARYKEY(`id`),UNIQUEKEY`bh`(`bh`)USINGBTREE)ENGINE=InnoDBAUTO_INCREMENT=16DEFAULTCHARSET=utf8COMMENT='仓储客户';CREATETRIGGER`tr_tcckh_bf_ins`BEFOREINSERTON`tcckh`FOREACHROWbeginsetnew.inssj=now();setnew.updsj=new.inssj;setnew.updczyid=new.insczyid;setnew.updczyxm=new.insczyxm;setnew.updczyzh=new.insczyzh;end;CREATETRIGGER`tr_tcckh_bf_upd`BEFOREUPDATEON`tcckh`FOREACHROWbeginsetnew.updsj=now();end;
解决方案
解决方案二:
有一个例子看看吧以下是一条SqlServer2000的触发器语句,现希望转换成mysql5.0的触发器语句该语句主要实现在Product表中插入一条记录时,将主键“Product_id”变成“CP001”、“CP002”.....的形式CREATEtriggerProduct_idondbo.ProductinsteadOFinsertasbegindeclare@preStrvarchar(10)declare@tempIDvarchar(16)declare@preTlvarchar(2)select*into#temptbfrominsertedselect@preTl=max(Product_id)frominsertedset@preStr=@preTldeclare@sequNumintselect@tempID=max(Product_id)fromProductwhereProduct_idlike@preStr+'%'if(@tempIDisnull)set@sequNum=1elseset@sequNum=cast(subString(@tempID,3,3)asint)+1set@tempID=right('000'+cast(@sequNumasvarchar),3)set@tempID=@preStr+@tempIDupdate#temptbsetProduct_id=@tempIDinsertintoProductselect*from#temptbend转换如下:-------------------------------mysql>mysql>delimiter|mysql>mysql>CREATETRIGGERtr_t_product_biBEFOREINSERTONproduct->FOREACHROWBEGIN->declaremax_idint;->->selectsubstring(max(product_id),3)intomax_idfromt_zqaq_520;->ifmax_idisnullthen->setmax_id=0;->endif;->setmax_id=max_id+1;->setnew.product_id=concat('CP',right(10000+max_id,3));->END;->|QueryOK,0rowsaffected(0.05sec)mysql>mysql>delimiter;