关于mysql中触发器old和new如何更好的区别我有话要说

关于mysql中触发器old和new如何更好的区别我有话要说,第1张

Mysql的触发器相当于内部处理的一些过程,不带入和带出任何的参数。

其内部使用的参数就是新旧两条记录old和new的字段。

用于完成数据表之间的触发 *** 作,来保证数据库的一致性、完整性。

Mysql的存储过程是类似于其它编程语言中的函数的功能。

存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数。

肯定不可以,mysql不能调用java代码,但是可以在java中创建触发器

1使用SQL创建触发器

DELIMITER $$CREATE TRIGGER `catefiles_trigger` AFTER INSERT ON `catefiles` FOR EACH ROWbegin 

declare 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吗的搜索推荐、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9874831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存