There are many ways to track changes made to the table in SQL Server
one of the method is to use inserted and deleted tables and get the
result set and use in code appropriately.
Step 1: Creating Table
create table Emp
(
empId int primary key identity,
class int,
empName varchar(30),
sal money,
empState varchar(25)
)
Step 2: Inserting values into the table
use row constructors or insert one by one
insert into Emp values
(2,’Dilip’,3000,’AP’),
(2,’Rahul’,5000,’DH’),
(3,’Mohan’,7000,’KR’),
(2,’Dilip’,3000,’AP’),
(2,’Rahul’,5000,’DH’),
(3,’Mohan’,7000,’KR’),
(4,’Dilip’,3000,’AP’),
(5,’Rahul’,5000,’DH’),
(6,’Mohan’,7000,’KR’),
(5,’Dilip’,3000,’AP’),
(6,’Rahul’,5000,’DH’)
Then,
Output clause
/* Local System*/
Updating
update Emp Set sal = sal +1
output inserted.empId,deleted.sal as [old sal], inserted.sal as [new sal]
where class =2
/* table Variable for server side maintenance*/
declare @change table
(
id int not null,
[old sal] money,
[new sal] money
)
update Emp Set sal = sal +1
output inserted.empId,deleted.sal as [old sal], inserted.sal as [new sal] into @change
where class =2
select * from @change
Deleting
delete Emp
output deleted.*
where empId=3 or empId = 6
Inserting
insert into Emp
output inserted.*
values
(13,’Dilip’,332.93,’JK’),
(14,’rakesh’,312.93,’GJ’)
For Updating,deleting and inserting we get a result set.
Update 21 Jan 2013
One of my reader Mini asked me that she is trying to insert multiple
values into table using row constructor but it is giving error in the
comma in the syntax ?
Ans:
1) Result set are not supported in sql server expressed Edition
2) Inserting multiple rows or technically can be called as Row Constructors are new feature added in SQL Server 2008
if we try to execute the above code on SQL Server 2005 we will get an
error at comma stating that it is not allowed, because this syntax is
introduced in SQL Server 2008 and even when we are working on client
server environment no matter what SQL Server you have if the server
to whom you are connecting is previous versions of SQL Server 2008 it
will not execute, so these things should kept into consideration.
No comments:
Post a Comment