SQL Server2008怎样建立一个触发器?

你好。首先感谢你解答了我的上一个问题:http://zhidao.baidu.com/question/1819750936235655028.html现在还有个问题请教... 你好。首先感谢你解答了我的上一个问题:http://zhidao.baidu.com/question/1819750936235655028.html
现在还有个问题请教一下。
就是当有新数据写入时,如何自动运行那一段代码?那个表中最后面一个字段“JGZBH”是我后来新增的。目的就是为了提取前面一个字段中的数字部分。现在需要表中有新数据时,触发代码自动提取数字部分。
谢谢。
展开
 我来答
百度网友d3a0377
2015-06-01 · TA获得超过187个赞
知道小有建树答主
回答量:507
采纳率:50%
帮助的人:235万
展开全部

我也不知道对不对,不对再说吧,给你直接贴代码了你自己看着改改

注意:你的那个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

追问

JGZBH字段的所有数据会变成最后一条数据的号码,你上面的截图也是。

你最后一条是333024,后面那个字段全部变成333024了。



来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式