tmj*_*tmj 4 t-sql sql-server-2008
我发现在sql server中只有after和而不是触发器.修改插入的pesudo表中的值是非法的.然后我的问题出现了:如果我想检查将要插入到我的表中的数据,并且当数据违反我的约束时我应该将这些值修改为默认值,该怎么做?插入后更新值怎么样?但是,如果我的表中没有唯一的主键或列,那么如何找到刚插入的行然后更新它?
mar*_*c_s 11
基本上,使用INSTEAD OF INSERT触发器,您可以实现您正在寻找的东西 - 只需从INSERTED伪表读出数据,修改它,然后将其插入表中
所以你的触发器看起来像这样:
CREATE TRIGGER YourTrigger ON dbo.YourTable
INSTEAD OF INSERT
AS
SET NOCOUNT ON
-- do the INSERT based on the INSERTED pseudo table, modify data as needed
INSERT INTO dbo.YourTable(Col1, Col2, ....., ColN)
SELECT
Col1, 2 * Col2, ....., N * ColN
FROM
INSERTED
Run Code Online (Sandbox Code Playgroud)
当然,您也可以在该语句中添加例如WHERE子句形式的检查,SELECT .... FROM INSERTED例如忽略某些行 - 可能性是无穷无尽的!
| 归档时间: |
|
| 查看次数: |
14205 次 |
| 最近记录: |