我们正在进行一些数据库重构,并将一些数据从一个表移动到另一个表。以前我们有一个“offerrequest”表,其中包含直接存储在其中的地址信息(城市,街道地址,邮政编码等)。现在我们将地址数据移动到单独的“地址”表中,该表包含在“offerrequest”表中引用该表的特定地址字段。问题是一些遗留应用程序仍然使用中的字段 offerrequest-table访问数据。有什么方法可以对offerrequest-table进行插入/更新查询,以便在查询中使用遗留地址字段时将地址数据保存到地址表中。 SQL-server我们使用mssql-server 2008
答案 0 :(得分:2)
如果你想使用@FabianBigler描述的触发器,这里是语法:
CREATE TRIGGER trgAfterInsert ON [dbo].[Employee_Test]
FOR INSERT
AS
INSERT Employee_Test_Audit
(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
SELECT Emp_ID, Emp_Name,Emp_Sal,'Created by insert trigger',getdate()
FROM INSERTED
GO
答案 1 :(得分:1)
您可以使用视图替换offerrequest-table。类似的东西:
create view offerrequest
as
select new_offerrequest.data, adress.data
from
new_offerrequest
join
adress
on
new_offerrequest.adress_id=adress.id
答案 2 :(得分:0)
做类似
的事情create trigger replacetrg on offerrequest
**instead of** insert,update,delete
as ...---instead of insert/update/delete on offerrequest
--do it on address.
答案 3 :(得分:-1)
您可以使用后插入trigger来实现这一目标。 这看起来像这样:
CREATE TRIGGER trgAfterInsert ON [dbo].[Employee_Test]
FOR INSERT
AS
declare @empid int;
declare @empname varchar(100);
declare @empsal decimal(10,2);
declare @audit_action varchar(100);
select @empid=i.Emp_ID from inserted i;
select @empname=i.Emp_Name from inserted i;
select @empsal=i.Emp_Sal from inserted i;
set @audit_action='Inserted Record -- After Insert Trigger.';
insert into Employee_Test_Audit
(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
values(@empid,@empname,@empsal,@audit_action,getdate());
PRINT 'AFTER INSERT trigger fired.'
GO
从Codeproject中提取的SQL示例。
编辑:请使用t-clausen.dk的答案,因为它还支持多行。