我有表Tb
如何在SQL Server的触发器上编辑INSERT的值?
ID | Name | Desc
-------------------------
1 | Sample | sample desc
我要创建INSERT触发器,这将改变插入Desc
的值,例如:
INSERT INTO Tb(Name, Desc) VALUES ('x', 'y')
会导致
ID | Name | Desc
-------------------------
1 | Sample | sample desc
2 | x | Y edited
在上面的例子中,我得到了插入的值Desc
将它改为大写和a末了edited
。
这就是我所需要的,获取正在插入并修改它的Desc
。
我该怎么做?
插入更新后处理它会更好吗?或者使用INSTEAD OF INSERT触发并在每次表结构更改时对其进行修改?
难道你不能以不同的方式做到这一点?我个人讨厌当我看到数据发生奇怪的事情时,我终于意识到,鬼触发器正在做一些事情 – 2010-08-26 22:45:49
我将用它来解决来自我无法访问的代码的问题。它插入一个项目的URL,但它不会删除重音和特殊字符,我会为我做一个触发器。 – BrunoLM 2010-08-26 23:08:31
这不是一个这么难的概念,它让我难以置信,微软无法提供像Oracle这样的简单功能,您可以在插入之前通过编辑:NEW值来修改任何值。也就是说,如果我想在插入它们之前总是将用户名改为upper(假设我不能在代码中出于某种原因执行此操作),则可以使用以下插入触发器:NEW.username:= UPPER(:NEW.username )。但是,在SQL Server中,您无法在INSERTED临时表中执行相同的操作,而这真的很糟糕。 – Jim 2012-05-15 18:43:56