3

私は次のクエリを持っています:

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

トリガーで確認したいのですが、クエリのIDが1に等しい場合は、別のクエリを送信します。

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

そうでなければ、何もしないでください。

問題は、パラメーターをそのままにして年齢を変更する方法がわからないため、基本的に同じクエリを送信して、特定のパラメーター(この場合は年齢パラメーター)を変更したいということです。

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 に答える