当前位置: 代码迷 >> Sql Server >> 触发器怎么才能忽略异常,不产生回滚
  详细解决方案

触发器怎么才能忽略异常,不产生回滚

热度:55   发布时间:2016-04-24 18:25:29.0
触发器如何才能忽略错误,不产生回滚
--建测试表
IF OBJECT_ID('test') IS NOT NULL
BEGIN
DROP TABLE test
END
GO
CREATE TABLE [dbo].[test](
[id] [bigint] PRIMARY KEY IDENTITY(1,1) NOT NULL,
[name] [nvarchar](200),
[desc] [nvarchar](50),
) ON [PRIMARY]
GO
--测试触发器
IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[trig_Test_Insert2]'))
BEGIN
DROP TRIGGER [dbo].[trig_Test_Insert2]
END
GO
CREATE TRIGGER [trig_Test_Insert2]
ON [dbo].[test]
FOR INSERT 
AS 
BEGIN
SELECT 1/0
IF @@ERROR<>0
raiserror('执行出错',16,1)
END
GO
--测试语句
INSERT INTO test ([name],[desc]) VALUES ( 'name1', 'desc1' )
SELECT * FROM test t


用了try catch, 也是不行……
------解决方案--------------------
sql 版本多少?数据改动了是否“仅记录”?
  相关解决方案