java触发器
Ⅰ 为什么我在java开发时,很少看到有人写存储过程和触发器,用这些和用代码实现有什么区别吗
因为存储过程已经因为维护的复杂度、稳定性、数据库的消耗等原因被大多数公司摒弃了,建议只在少数需要灵活调整sql的简单的地方用用
Ⅱ 关于mysql中的触发器能调用JAVA吗的搜索推荐
肯定不可以,mysql不能调用java代码,但是可以在java中创建触发器
1.使用SQL创建触发器
DELIMITER$$CREATETRIGGER`catefiles_trigger`AFTERINSERTON`catefiles`FOREACHROWbegin
declarenum1int;setnum1=(selectnumfromest_client_catescan_statuswherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId);if(num1>=0)thenupdatecatescan_statussetnum=num1+1wherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId;elseinsertcatescan_status(cateid,num,status,taskid,clientid)values(new.cateId,1,0,new.taskid,new.clientId);endif;end$$
2.在Java程序里创建触发器
Stringsql=+"CREATETRIGGERcatefiles_"
+"begin"
+"declarescannumint;"
+"setscannum=(selectnumfromest_client_catescan_statuswhere"
+"cateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId);"
+"if(scannum>=0)then"
+"updatecatescan_statussetnum=scannum+1wherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId;"
+"else"
+"insertcatescan_status(cateid,num,status,taskid,clientid)values(new.cateId,1,0,new.taskid,new.clientId);"
+"endif;"
+"end";
Connectioncon=DbConnectionManager.getConnection();
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.execute();
3.可以看出区别:在java中创建触发器,不需要限定符DELIMITER ,加上的话执行过程中会报MySQL语法错误
Ⅲ 触发器与java程序哪个更好比较触发器与java程序处理
到底使用哪种方法更好?个人觉得两种方法都有可行之处:比如吃鱼,从头开始还是从尾巴开始抑或是从肚子开始?没有人硬规定从哪里下口最好。纯属个人习惯、爱好。 不过,从提高效率从发,习惯和爱好的观点就得靠后站了。举例: 1、数据表的建立use logincreate table voteMaster -----主表(voteId int primary key, --编号 voteTitle varchar(100) not null, ---投票的项目 voteSum int default 0 --总票数,默认为0)insert into voteMaster values(1,'选举工会主席',0) insert into voteMaster values(2,'对网站的建议',0)create table voteDetails ---从表(voteId int foreign key references voteMaster(voteId),----外键 约束 voteDetailsId int not null, voteItem varchar(20) not null, votNum int default 0, primary key(voteId,voteDetailsId) ----连合主键 )insert into voteDetails values(1,1,'于海涛',0) insert into voteDetails values(1,2,'王小刚',0) insert into voteDetails values(1,3,'张老三',0)insert into voteDetails values(2,1,'非常好',0) insert into voteDetails values(2,2,'好',0) insert into voteDetails values(2,3,'一般',0) insert into voteDetails values(2,4,'需要改进',0)2、触发器的创建create trigger updateMaster -----创建触发器 on voteDetails -----触发器所建的表 for update -----触发器的条件asbeginupdate voteMaster set voteSum=voteSum+1 where voteId=(select top 1 voteid from inserted) end最终效果:你只要对voteDetails 内votNum的数据进行更新,那么主表voteMaster 的voteSum就会加1,从而实现了对投票的总数的统计的实现。注意: select top 1 voteid from deleted inserted表 deleted表 insert 新插入的行 空 update 数据库受到影响的行在更新之后的新值 数据库受到影响的行在更新之前的旧值delete 空 删除的行 总结:本着提高程序效率着想,能用触发器的地方,还是尽量用触发器吧:)
Ⅳ 如何用java创建触发器
java是应用程序,可以通过jdbc接口调用触发器:
create or replace trigger bj_customer
before update on customer
for each row
begin
update order set
cu_no=:new.cu_no,
cu_name=:new.cu_name,
cu_address=:new.cu_addess,
where cu_no=:old.cu_no;
end;
调用executeUpdate方法即可
Ⅳ 请问一下怎么做一个定时触发器啊,我想要用java程序中做一个定时触发器,请各位高手指教,最好有源代码
final Timer machinetimer = new Timer();
machinetimer.schele(new TimerTask() {
@Override
public void run() {
//定时执行的方法
XXXX();
}
}, 1000, 1000);
第一个 1000 代表系统运行后,这个定时任务多久会执行。
第二个 1000 代表每次执行间隔时间
如果有不懂的可以再来问我
Ⅵ java如何调用MySQL的触发器
触发器顾名思意就是在某个动作执行时自动触发执行的,不用调用,比如你是在add和delete数据时加触发器,只要你定义的对,数据库在向你指定的那张表add和delete数据时,该触发器就会自动触发
Ⅶ 着急!Java怎样调用存诸过程和触发器
其实跟普通的JDBC使用方法是一样的。只不过是用的类不同。给你个例子看看吧。其中的call set_death_age(?, ?)就是存储过程名,变量同样用占位符?代替。
try{
int age = 39;
String poetName = "dylan thomas";
CallableStatement proc = connection.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, poetName);
proc.setInt(2, age);
cs.execute(); }
catch (SQLException e){e.printStackTrace();}
Ⅷ java里trigger是干什么用的
Trigger不是java特性也不是java内置的代码,而是其它程序的封装。
在Quartz中Trigger是触发器,Quartz中的触发器用来告诉调度程序作业什么时候触发
即Trigger对象是用来触发执行Job的
Ⅸ java开发时触发器有什么作用,什么开发场景时会用到
比如说你emp和dept两张表是有外键关联的,当emp存在相关数据时,dept无法删除数据,这时候就可以写个触发器,让他可以删除的同时并对emp表的依赖数据发生变化