触发从多个表复制记录

时间:2018-06-19 09:44:22

标签: sql sql-server database tsql triggers

我有以下表格:

TableStaff

UserId, Username, Firstname, Lastname
1001 CLWA Clara Wallace
1002 RITA Ricky Tate
1003 PAEV Pat Evans

TableFeatures

UserId, Feature, Notes, LogDate
1001 901 Note1 2018-06-15
1002 905 Note111 2018-06-17
1003 903 Note222 2018-06-18

TABLEEXPORT

UserId, Username, Firstname, Lastname, Feature, Notes
1001 CLWA Clara Wallace 901 Note1    
1002 RITA Ricky Tate 905 Note111
1003 PAEV Pat Evans 903 Note222

我们有一个前端应用程序,我们可以从中选择用户和功能,然后将其插入 TableFeatures 。 每次插入新记录时,我都希望将新记录插入 TableExport

每天晚上10点,计划作业会将数据从 TableExport 导出到CSV,然后表格会被截断。

我不确定如何创建可以复制用户名,名字,姓氏以及 UserId,功能,备注

的触发器

我有以下触发器仅从 TableFeatures

复制 UserId,功能,备注
CREATE TRIGGER trig_TableFeatures ON TableFeatures
FOR INSERT 
AS
INSERT INTO TableExport (UserId, Feature, Notes)
SELECT UserId, Feature, Notes from Inserted
GO

非常感谢您对此的任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要JOIN

CREATE TRIGGER trig_TableFeatures ON TableFeatures
FOR INSERT 
AS
BEGIN
    INSERT INTO TableExport (UserId, Username, Firstname, Lastname, Feature, Notes)
        SELECT i.UserId, s.Username, s.Firstname, s.Lastname, i.Feature, i.Notes 
        FROM Inserted i JOIN
             TableStaff s
             ON i.UserId = s.UserId
END;

答案 1 :(得分:0)

戈登的答案仅是正确的,您只需要一个联接,因为您提到了该错误,所以我尝试自己在sql sever 2016上运行,对我来说很好。这是代码。

   insert into TabelExport
   (userid,username,firstname,
   lastname,feature,notes)
   select  i.userid,ts.username,
   ts.firstname,
   ts.lastname,i.features,
   i.notes 
   from inserted i 
   inner join TableStaff ts 
   on (i.userid=ts.userid);