怎么把MySql的触发器改成SQL Server的触发器

问题描述

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;

时间: 2024-11-01 14:27:57

怎么把MySql的触发器改成SQL Server的触发器的相关文章

怎么把MySql的触发器改成SQL Server的触发器。。。。。急啊!!!

问题描述 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'

jdbc sql语句-从网上下的mysql代码想改成sql server的,能帮我看看我改的代码对吗?

问题描述 从网上下的mysql代码想改成sql server的,能帮我看看我改的代码对吗? 网上的drop database bbs; create database bbs; use bbs; CREATE TABLE admin (id int(11) NOT NULL AUTO_INCREMENTusername varchar(50) DEFAULT NULLpassword varchar(50) DEFAULT NULL PRIMARY KEY (id)) ENGINE=InnoDB

mysql-求教!下面的MySQL代码怎么改成sqlserver的?拜托拜托!

问题描述 求教!下面的MySQL代码怎么改成sqlserver的?拜托拜托! CREATE TABLE trade ( tradeid int NOT NULL PRIMARY KEY identity(17,1), userid int NOT NULL, tradetime datetime NOT NULL, KEY "user_id_fk" ("userid"), CONSTRAINT "user_id_fk" FOREIGN KEY (

mysql-mySQL的limit分页怎么转换成SQL server语句

问题描述 mySQL的limit分页怎么转换成SQL server语句 String sql="select " + str + " from product,shop where product.shop_id=shop.shop_id " + " limit " + (page *size) + "," + size;//通过limit来达到分页的效果_ 其中定义了private String str = "pr

sql server 2008触发器

问题描述 sql server 2008触发器 当我添加一条数据时,如果数据库有和添加的数据编号一致时视为修改否则为添加,触发器怎么实现 解决方案 这需要用到触发器?做个查询就可以解决的事,为什么要用触发器... 能先理触发器的作用吗? 网上找了一个给你..http://www.jb51.net/article/23895.htm 解决方案二: 弄一个check约束! 解决方案三: 触发器太费资源了,可以用约束来替代 解决方案四: 约束能做的就不要用触发器了, 你的数据库如果数据都是十几万级以上

转换数据库-数据库:Oracle数据库转换成SQL server数据库

问题描述 数据库:Oracle数据库转换成SQL server数据库 把oracle数据库转换成SQL server数据库(2008 r2)版本的,数据迁移,大概百万条数据,有什么好的办法或者是执行语句嘛: 解决方案 我只知道可以把脚本倒出来 然后在sql中执行 解决方案二: http://wenku.baidu.com/link?url=TA7z0XmVyfKHyTQqiPwE6gAdkKbFG7ngBBL75mvjbRbAGFVElPyxOLFSvNT4YskRl8KLdeVdOlHc8a6

SQL server 2008 触发器

问题描述 SQL server 2008 触发器 sql server 中创建触发器,当表中的任意一列的数据更新时除了read_flag,将read_flag的置为0,这个触发器怎么写, CREATE TRIGGER trig_wmwhse4_SKU on wmwhse4.SKU instead of update as begin if (exists (select 1 from inserted a ,deleted b where a.STORERKEY = b.STORERKEY an

SQL Server 使用触发器(trigger)发送电子邮件步骤详解

sql 使用系统存储过程 sp_send_dbmail 发送电子邮件语法: sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...n ]' ] [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ] [ , [ @blind_copy_recipients = ] 'blind_copy_recipien

sql insert 触发器-sql server insert 触发器

问题描述 sql server insert 触发器 一张考勤表A,要求:当A表中有新数据插入时,要执行条件(即:SerialNumber等于RecTime按降序排列的序号,根据EmpID相同并且RecDate相同,SerialNumber就重新从1开始),求得SerialNumber的值并填充数据. http://zhidao.baidu.com/question/1882118898301616388.html?quesup2&oldq=1&sort=6