是否可以在插入之前和使用触发器完成更新之后检索表记录 [英] Is it possible to retrieve table records both before insert and after update done using triggers

查看:74
本文介绍了是否可以在插入之前和使用触发器完成更新之后检索表记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨..
我使用触发器,例如,我有一个带有EmpId和EmpName的表EmployeeDetails.我已经在其中插入了2条记录,分别是"01,Kamal和02,Surya".通过使用AfterUpdate触发器,将第二个员工名称更新为"Raj".现在如何在更新表之前和之后都检索EmployeeDetails的数据,即我希望在同一张表中,更新名称之前的详细信息应为"Surya",更新名称之后的应为"Raj" ...指导我很快

Hi..
Im using triggers,for example im having a table EmployeeDetails with EmpId and EmpName. I have already inserted 2 records into it called "01,Kamal and 02,Surya". By using AfterUpdate trigger,im updating the 2nd employee name as "Raj". Now how to retrieve the both the data of EmployeeDetails before and after updation of a table ie i want details as before updation name should be as "Surya" and after updation name should be as "Raj" in a same table...guide me soon

推荐答案

创建两个表.

Create Both tables.

 Create table Emp (
EmpId  varchar(5),
EmpName varchar(40)
)
Create table EmployeeDetailsHist (
EmpId  varchar(20)
, EmpName varchar(40)
, HistoryDate datetime 
) 


更新触发器后


After update Trigger

create TRIGGER EmpAfterUpdate
ON Emp
AFTER UPDATE
AS
IF ( UPDATE (EmpId) OR UPDATE (EmpName) )
BEGIN
INSERT INTO EmployeeDetailsHist (EmpId, EmpName, HistoryDate)
select EmpID, EmpName, getdate()
from deleted ;
END;



现有数据

1个Kamal
2 surya



Existing data

1 Kamal
2 surya

Update Emp set EmpName = ''Raj'' where EmpId = ''1''

select 
''Current'' as Origin, EmpId, EmpName from Emp 
union all
select ''History'' as Origin, EmpId, EmpName from EmployeeDetailsHist



结果是:



Result is:

Status    EmpId   Name 
------------------------
Current	1	Raj
Current	2	Surya
History	1	Kamal


没有类似的选项,您必须制作2条select语句以显示更新的数据和未更新的数据.萨钦先生的举止得体而轻松.例如
No options like that, You have to craft 2 select statement to show the updated data and unupdated data. Mr Sachin have give easy and good eg.


这篇关于是否可以在插入之前和使用触发器完成更新之后检索表记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆