将sql列值存储在另一个表中

时间:2015-02-24 12:05:13

标签: sql sql-server

我们正在进行一些数据库重构,并将一些数据从一个表移动到另一个表。以前我们有一个“offerrequest”表,其中包含直接存储在其中的地址信息(城市,街道地址,邮政编码等)。现在我们将地址数据移动到单独的“地址”表中,该表包含在“offerrequest”表中引用该表的特定地址字段。问题是一些遗留应用程序仍然使用中的字段 offerrequest-table访问数据。有什么方法可以对offerrequest-table进行插入/更新查询,以便在查询中使用遗留地址字段时将地址数据保存到地址表中。 SQL-server我们使用mssql-server 2008

4 个答案:

答案 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的答案,因为它还支持多行。