Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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).

like image 389
m0fo Avatar asked Mar 07 '26 11:03

m0fo


1 Answers

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
like image 84
Andomar Avatar answered Mar 10 '26 00:03

Andomar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!