下面这个是我发过的一个贴 一个好心人跟我说有触发器,我查了一下果然有触发器。
我的问题是我用JDBC连接SQL2005中有一个update方法 就是修改readers表.....
String sql="update readers set rName='"+rName+"' ,rtype="+rType+" where rno='"+rNo+"'";
System.out.println(sql);
PreparedStatement stmt=con.prepareStatement(sql);
int rtn=stmt.executeUpdate();//对于返回两个结果的语句来说 不起作用 暂时未解决
if(rtn==1){
System.out.println("更新: "+rName+" 成功");
}else{
System.out.println("更新失败!");
}
.....我想用返回值rtn来判断是否更新成功,但是就像下面的一样 rtn只会等于上面的那个0,而不会是下面的1,请问我在不删除触发器的
前提下怎么处理这个问题,谢谢!--------------以前的问题-------------------
我数据库中有张表为reader(读者信息表) 有3个字段:rNo,rName,rType
现在我根据rno来更改reader的信息,语句执行正确。 但为什么返回结果有两句?
希望知情的跟我说一下,谢谢!
update readers set rName='真的爱你' ,rtype=3 where rno='Z07041353'
结果为: (0 行受影响) (1 行受影响)————————————————
我的问题是我用JDBC连接SQL2005中有一个update方法 就是修改readers表.....
String sql="update readers set rName='"+rName+"' ,rtype="+rType+" where rno='"+rNo+"'";
System.out.println(sql);
PreparedStatement stmt=con.prepareStatement(sql);
int rtn=stmt.executeUpdate();//对于返回两个结果的语句来说 不起作用 暂时未解决
if(rtn==1){
System.out.println("更新: "+rName+" 成功");
}else{
System.out.println("更新失败!");
}
.....我想用返回值rtn来判断是否更新成功,但是就像下面的一样 rtn只会等于上面的那个0,而不会是下面的1,请问我在不删除触发器的
前提下怎么处理这个问题,谢谢!--------------以前的问题-------------------
我数据库中有张表为reader(读者信息表) 有3个字段:rNo,rName,rType
现在我根据rno来更改reader的信息,语句执行正确。 但为什么返回结果有两句?
希望知情的跟我说一下,谢谢!
update readers set rName='真的爱你' ,rtype=3 where rno='Z07041353'
结果为: (0 行受影响) (1 行受影响)————————————————
如果有返回值,可试试这样
--大体上String sql="update readers set rName='"+rName+"' ,rtype="+rType+" where rno='"+rNo+"'";
System.out.println(sql);
PreparedStatement stmt=con.prepareStatement(sql);
int rtn=stmt.execute(sql);//对于返回两个结果的语句来说 不起作用 暂时未解决
int rowCount = stmt.getUpdateCount();
if(rowCount >=1){
System.out.println("更新: "+rName+" 成功");
}else{
System.out.println("更新失败!");
}
disable trigger 觸發器名稱
------------------
下麵是啟用觸發器
alter table readers
enable trigger 觸發器名稱
update tb set col=xxx where col=yyy
set nocount off
String sql="update readers set rName='"+rName+"' ,rtype="+rType+" where rno='"+rNo+"';select 1;";
System.out.println(sql);
PreparedStatement stmt=con.prepareStatement(sql);
int rtn=(int)stmt.executeScalar();
if(rtn==1){
System.out.println("更新: "+rName+" 成功");
}else{
System.out.println("更新失败!");
}
这种用法本来就有问题,应该try ... catch
不出错就成功
我的处罚期可以修改 不知道怎么修改]
没有看明白是什么意思 能详细一点吗?...
on [dbo].[readers]
for update
as
declare @rnoBeforeModify char(10),
@rnoAfterModify char(10)
select @rnoBeforeModify=rno from deleted --获取修改前的学号
select @rnoAfterModify=rno from inserted
update borrowinf set rno=@rnoAfterModify where rno=@rnoBeforeModify
on [dbo].[readers]
for update
as
declare @rnoBeforeModify char(10),
@rnoAfterModify char(10)
set nocount on select @rnoBeforeModify=rno from deleted --获取修改前的学号
select @rnoAfterModify=rno from inserted
update borrowinf set rno=@rnoAfterModify where rno=@rnoBeforeModifyset nocount off