【问题标题】:SQL Trigger to add data from other table if there is an entry match如果存在条目匹配,则 SQL 触发器从其他表中添加数据
【发布时间】:2017-06-29 17:13:54
【问题描述】:

我有两张桌子一张:

ID | TimeStamp | Data
---|-----------|------ 
1  | 10/10/2015| 54
2  | 11/10/2015| 493
3  | 12/10/2015| 293

和另一个:

ID | Interval | Location
---|----------|------ 
1  | 23       | New York
2  | 22       | London
3  | 21       | Paris

我想要一个SQL trigger,它在将新条目添加到第一个表时执行。然后trigger 会将两个表中的数据合并到另一个表中......就像这样:

ID | TimeStamp | Data | Interval | Location
---|-----------|------|----------|------ 
1  | 10/10/2015|    54| 23       | New York
2  | 11/10/2015|   493| 22       | London
3  | 12/10/2015|   293| 21       | Paris

我是 SQL 的新手,并且已经研究了触发器和加入请求。如果有人能指出我写查询的正确方向,那就太棒了。

【问题讨论】:

  • 那么你的单表数据触发器是什么样子的?
  • 您可能会重新考虑您的应用程序设计。我通常建议不要存储组合表,而是编写一个动态返回组合视图的视图。

标签: sql sql-server triggers


【解决方案1】:

我认为在这种情况下正确的方法是使用连接(作为查询或创建视图),听起来像使用触发器并保留两次数据是多余的。

这里的join很简单,就是id字段的inner join:

SELECT f.ID, f.timestamp, f.data, second.location, second.interval from
  firstTable as f inner join secondTable as s on f.ID = s.ID;

如果您想将其作为视图,只需执行以下操作:

CREATE VIEW joinView AS
SELECT f.ID, f.timestamp, f.data, second.location, second.interval from
  firstTable as f inner join secondTable as s on f.ID = s.ID;

【讨论】:

  • 非常感谢!当新条目进入第一个表时,是否有办法使此连接查询触发?还是这会自动发生?
  • 输入新数据时什么都不会发生,这就是视图的思想——视图查询在视图被查询时执行,所以结果就是那一刻表中的任何结果跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 2021-09-24
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多