触发器中定义如下
declare @Sql as varchar(8000)
set @sql='update ...'
exec @sql
if @@error<>0
begin
raiserror('更新时出错',16,1)
rollback tran
end
....
执行时不报错,但是数据只能存一行,其他的数据丢失
将exec @sql注释掉就没问题,后将此@SQL变量保存在表中然后将exec @sql替换成保存下来的SQL语句,再运行就没问题了
...全文
2636打赏收藏
触发器中执行exec @SQl时出错
触发器中定义如下 declare @Sql as varchar(8000) set @sql='update ...' exec @sql if @@error0 begin raiserror('更新时出错',16,1) rollback tran end .... 执行时不报错,但是数据只能存一行,其他的数据丢失 将exec @sql注释掉就没问题,后将此@SQL变量保存在表中然后将exec @sql替换成保存下来的SQL语句,再运行就没问题了
CREATE TRIGGER 触发器名称 on 表名
FOR 触发器类型
AS
declare @Sql varchar(8000)
set @Sql =
'begin transaction
update ...
if @@error <> 0
begin
raiserror(''更新时出错'',16,1)
rollback
end
else
commit transaction'
EXEC(@Sql)