m0fo
m0fo

Reputation: 2189

SQL Server 2008 Before Insert Trigger

I have the following Query:

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

In my trigger I want to check - if the query's ID is equal to 1, send another query:

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

Else, dont do anything.

The problem is, I dont know how to keep the parameters as is and just change the age, so basically I want to send the SAME query, and change a certain parameter (in this case, its the age parameter).

Upvotes: 3

Views: 9275

Answers (1)

Andomar
Andomar

Reputation: 238086

The rows about to be inserted can be found in the special inserted table. Here's an example:

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

This prints:

id  name      age
1   TestName  20
2   TestName  21

Upvotes: 3

Related Questions