SQL 回滚触发器 VB执行报错

我在sql表中建立了一个回滚触发器,就是如果成绩表的数据超过0到100之间,就提示“数据只能在0到100之间”。我在SQL中试了好用,但是我在VB中运行的时候,到也能执行,只要我输入100以上的数据的时候,就提示超出范围,但是我要是确定的话vb就报错了,就提示操作已取消什么的,然后就完蛋了,哈哈。谁能帮我解决一下,谢谢了哈,我把代码给大家看下哈。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[sc_insupd]
ON [dbo].[成绩表]
FOR INSERT, UPDATE
AS
DECLARE @sx int
DECLARE @wli int
DECLARE @yy int
DECLARE @vb int
DECLARE @wluo int
DECLARE @zx int
SELECT @sx=inserted.数学 from inserted
SELECT @wli=inserted.物理 from inserted
SELECT @yy=inserted.英语 from inserted
SELECT @vb=inserted.VB from inserted
SELECT @wluo=inserted.网络 from inserted
SELECT @zx=inserted.哲学 from inserted
IF ((@sx<0 or @sx > 100)or(@wli<0 or @wli > 100)or(@yy<0 or @yy > 100)or(@vb<0 or @vb > 100)or(@wluo<0 or @wluo > 100)or(@zx<0 or @zx > 100))
BEGIN
RAISERROR ('成绩的取值必须在0到100之间', 16, 1)
ROLLBACK TRANSACTION
END

dim sTrg as string
sTrg="create trigger trgName on ......"
连接.execute(sTrg)
触发器是不能带参数的,能够判断哪些字段做了修改,和改前后的值
建议在第一张表中加个字段 "最后修改人"
然后用触发器捕捉更改前后的值,在分别判断每个字段是否做了修改,然后将值插入到新表中
或者将修改表的操作必须通过存储过程,在过程中向第一个表修改,向第二个表添加,这样避免使用触发器
我这里没有sql server 环境无法编写

create trigger tr_table on 表 for update,insert
as
begin
if update(列名)
insert into 表2 (id,修改字段,改前值,改后值,时间,操作员)
select id,'列名',i.列名,d.列名,getdate(),操作员 from inserted i,deleted d where i.id=d.id
end if
end

大概就是这个样子,好久没用sql server了语法不熟悉了,而且没有环境,只能大致写一个,参考一下
if update(列名) 判断某个列是否做了更新
inserted 修改前的值
deleted 修改后的值
温馨提示:内容为网友见解,仅供参考
无其他回答

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答
大家正在搜