3

我有以下查询:

Insert into tblTest (ID, Name, Age) VALUES (1, 'TestName', 20);

在我的触发器中,我想检查 - 如果查询的 ID 等于 1,则发送另一个查询:

Insert into tblTest (ID, Name, Age) VALUES (2, 'TestName', 21);

否则,不要做任何事情。

问题是,我不知道如何保持参数不变而只是更改年龄,所以基本上我想发送 SAME 查询,并更改某个参数(在这种情况下,它的年龄参数)。

4

1 回答 1

3

即将插入的行可以在特殊inserted表中找到。这是一个例子:

if object_id('tblTest') is not null 
    drop table tblTest
create table tblTest (id int, name varchar(50), age int)
go
create trigger trg_tblTest_BeforeInsert
on tblTest
after insert
as begin
    insert  tblTest
    select  id + 1
    ,       name
    ,       age + 1
    from    inserted
    where   id = 1 -- Only for rows with id=1
end
go
insert tblTest (id, name, age) values (1, 'TestName', 20)
select * from dbo.tblTest

这打印:

id  name      age
1   TestName  20
2   TestName  21
于 2012-04-15T08:46:09.863 回答