【问题标题】:Trigger to copy record from multiple tables触发器从多个表中复制记录
【发布时间】:2018-06-19 09:44:22
【问题描述】:

我有下表:

桌员

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

表格功能

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

表格导出

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:00,计划作业会将数据从 TableExport 导出到 CSV,然后表格会被截断。

我不确定如何创建一个触发器,该触发器可以复制 Username、Firstname、Lastname 以及 UserId、Feature、Notes

我有以下触发器,它只从 TableFeatures

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

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

【问题讨论】:

  • 我建议你不要创建触发器。将数据插入 TableFeatures 时,也将数据插入 TableExport。您拥有所有相关的列,并且将更容易插入和更好的设计。而不是依赖触发器为您执行插入操作。
  • 我看到的第一件事,我认为您不需要 TableExport 中的所有这些列,这是我的注释,对于 trigger,您可以在 TableFeatures 上创建一个简单的SELECT 并加入TableStaff 表。

标签: sql sql-server database tsql triggers


【解决方案1】:

如果我理解正确,你只需要一个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;

【讨论】:

  • 它抱怨:列名“UserId”不明确。我已经尝试过 TableFeatures.UserId 或 TableStaff.UserId,这会引发另一个错误“无法绑定多部分标识符“TableFeatures.UserId”。”
【解决方案2】:

戈登的回答是正确的,你只需要一个连接,因为你提到了这个错误,我自己在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2018-08-20
    相关资源
    最近更新 更多