SQL Server2008怎样建立一个触发器?
你好。首先感谢你解答了我的上一个问题:http://zhidao.baidu.com/question/1819750936235655028.html现在还有个问题请教...
你好。首先感谢你解答了我的上一个问题:http://zhidao.baidu.com/question/1819750936235655028.html
现在还有个问题请教一下。
就是当有新数据写入时,如何自动运行那一段代码?那个表中最后面一个字段“JGZBH”是我后来新增的。目的就是为了提取前面一个字段中的数字部分。现在需要表中有新数据时,触发代码自动提取数字部分。
谢谢。 展开
现在还有个问题请教一下。
就是当有新数据写入时,如何自动运行那一段代码?那个表中最后面一个字段“JGZBH”是我后来新增的。目的就是为了提取前面一个字段中的数字部分。现在需要表中有新数据时,触发代码自动提取数字部分。
谢谢。 展开
1个回答
展开全部
我也不知道对不对,不对再说吧,给你直接贴代码了你自己看着改改
注意:你的那个JGZBH这一列要在表中实际存在,千万别是视图做的虚拟列。不然,估计会失败。
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE [NAME] = 'TR_GetNum' AND XTYPE = 'TR')
DROP TRIGGER TR_GetNum
GO
CREATE TRIGGER TR_GetNum
ON dbo.Table_1
AFTER INSERT
AS
BEGIN TRANSACTION
UPDATE dbo.Table_1 SET JGZBH =substring(INSERTED.JGZID,patindex('%[^0-9][0-9]%',INSERTED.JGZID)+1,patindex('%[0-9][^0-9]%',INSERTED.JGZID)-patindex('%[^0-9][0-9]%',INSERTED.JGZID)) FROM INSERTED;
UPDATE dbo.Table_1 SET JGZBH = '' WHERE JGZBH = '0';
SELECT * FROM dbo.Table_1
IF(@@ERROR<>0)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
GO
INSERT INTO dbo.Table_1(JGZID)
VALUES('某某333024号')
SELECT * FROM dbo.Table_1
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询