请教个很棘手的“触发器”问题

dudemin 2004-01-14 11:48:07
现象:
SLQ触发器判断没问题,但ASP程序中对触发器返回的@@rowcount信息处理错误;就是错误值有时候读不出来,下面是一个测试例子,字段检测是JCKSPZE,条件是JCKSPZE必须<100

能读出错误时的触发器:

CREATE TRIGGER [TRI_HGHYHGJCK] ON [dbo].[usrHGHYHGJCK]
FOR INSERT, UPDATE
AS
declare @JCKSPZE FLOAT

IF EXISTS (SELECT * FROM INSERTED WHERE JCKSPZE>100 AND GKBZ=1)

BEGIN
RAISERROR('JCKSPZE ERROR!',16,1)
ROLLBACK TRAN
RETURN

END

UPDATE usrHGHYHGJCK SET ZTGJ='中国' from inserted a,usrHGHYHGJCK b where a.ID=b.ID and a.ZTGJ<>'中国'
不能读出错误时的写法:
CREATE TRIGGER [TRI_HGHYHGJCK] ON [dbo].[usrHGHYHGJCK]
FOR INSERT, UPDATE
AS
declare @JCKSPZE FLOAT

UPDATE usrHGHYHGJCK SET ZTGJ='中国' from inserted a,usrHGHYHGJCK b where a.ID=b.ID and a.ZTGJ<>'中国'

IF EXISTS (SELECT * FROM INSERTED WHERE JCKSPZE>100 AND GKBZ=1)

BEGIN
RAISERROR('JCKSPZE ERROR!',16,1)
ROLLBACK TRAN
RETURN

END

程序里的触发器判断语句:

if isSave="True" then
'如果是在本页面执行保存操作,则:
'0、执行数据验证程序(检查字段间关系)(在公开标志为0时,不检查)
strCondition=trim(rsTable("Validation1"))

'1、执行数据验证程序(验证:唯一字段)(对于SCBZ=1的,不检查)
'.............

' Response.Write strUnique

arrCon=Split(strUnique,";",-1,1)
for i=0 to UBound(arrCon)-1
strSql="Select ID From " & strTable & " Where " & arrCon(i) & " And SCBZ=0 And ID<>" & varID
set rsTmp=server.CreateObject("ADODB.recordset")
rstmp.open strSql,cnn

if Not (rsTmp.bof and rsTmp.Eof) then
Response.Write "字段的值不唯一!" & vbCrlf & arrCon(i)
Response.Write "<Input Type=button id=btnBack name=btnBack value=重新输入(B) accesskey=B class=button onclick='history.back'>"
set rsTmp=nothing
set cnn=nothing
Response.End
end if
set rsTmp=nothing
next

'2、保存记录
strSql=TRIM(Request("txtSQL"))

strSql=Replace(strSql,"@ID@",varID)
strSql=Replace(strSql,"@XGRY@",session("UserName"))

if instr(1,strSql,"Where ID=" & varID)=0 then
'strSql不正确!不能保存!
Response.Write "保存用的SQL语句不正确!<br>"
Response.Write strSql
Response.End
end if

'3、更新计算字段
if trim(rsTable("Validation3"))<>"" then
strUpdate="Update " & strTable & " Set " & trim(rsTable("Validation3")) & " Where ID=" & varID
strSql=strSql & ";" & strUpdate
end if

On error resume next

cnn.EXECUTE strSql

if err.number<>0 then
isSave="Error"
Response.Write "<P>出错1:" & err.number & vbcrlf & err.Description & "<P>"
Response.Write "<Input Type=button id=btnBack name=btnBack value=重新输入(B) accesskey=B class=button onclick='history.back'>"
Response.Write "</Script>" & vbcrlf
Response.End

end if
'**********************************

on error goto 0

end if
...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dudemin 2004-01-14
  • 打赏
  • 举报
回复
哎,怎么没人帮忙啊
dudemin 2004-01-14
  • 打赏
  • 举报
回复
eliphe 2004-01-14
  • 打赏
  • 举报
回复
太长了.....

28,407

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧