Mysql的触发器相当于内部处理的一些过程,不带入和带出任何的参数。
其内部使用的参数就是新旧两条记录old和new的字段。
用于完成数据表之间的触发 *** 作,来保证数据库的一致性、完整性。
Mysql的存储过程是类似于其它编程语言中的函数的功能。
存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数。
肯定不可以,mysql不能调用java代码,但是可以在java中创建触发器
1使用SQL创建触发器
DELIMITER $$CREATE TRIGGER `catefiles_trigger` AFTER INSERT ON `catefiles` FOR EACH ROWbegindeclare num1 int; set num1 = (select num from est_client_catescan_status where cateid=newcateId and taskid=newtaskId and clientid=newclientId); if(num1>=0) then update catescan_status set num=num1+1 where cateid=newcateId and taskid=newtaskId and clientid=newclientId; else insert catescan_status(cateid,num,status,taskid,clientid) values(newcateId,1,0,newtaskid,newclientId); end if; end$$
2在Java程序里创建触发器
String sql=+" CREATE TRIGGER catefiles_trigger AFTER INSERT ON catefiles FOR EACH ROW"+" begin"
+" declare scannum int;"
+" set scannum = (select num from est_client_catescan_status where"
+" cateid=newcateId and taskid=newtaskId and clientid=newclientId);"
+" if(scannum>=0) then"
+" update catescan_status set num=scannum+1 where cateid=newcateId and taskid=newtaskId and clientid=newclientId;"
+" else"
+" insert catescan_status(cateid,num,status,taskid,clientid) values(newcateId,1,0,newtaskid,newclientId);"
+" end if;"
+" end";
Connection con = DbConnectionManagergetConnection();
PreparedStatement pstmt = conprepareStatement(sql);
pstmtexecute();
3可以看出区别:在java中创建触发器,不需要限定符DELIMITER ,加上的话执行过程中会报MySQL语法错误
以上就是关于关于mysql中触发器old和new如何更好的区别我有话要说全部的内容,包括:关于mysql中触发器old和new如何更好的区别我有话要说、关于mysql中的触发器能调用JAVA吗的搜索推荐、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)