如果存在条目匹配,则 SQL 触发器从其他表中添加数据
Posted
技术标签:
【中文标题】如果存在条目匹配,则 SQL 触发器从其他表中添加数据【英文标题】:SQL Trigger to add data from other table if there is an entry match 【发布时间】: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
的新手,并且已经研究了触发器和加入请求。如果有人能指出我写查询的正确方向,那就太棒了。
【问题讨论】:
那么你的单表数据触发器是什么样子的? 您可能会重新考虑您的应用程序设计。我通常建议不要存储组合表,而是编写一个动态返回组合视图的视图。 【参考方案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;
【讨论】:
非常感谢!当新条目进入第一个表时,是否有办法使此连接查询触发?还是这会自动发生? 输入新数据时什么都不会发生,这就是视图的思想——视图查询在视图被查询时执行,所以结果就是那一刻表中的任何结果跨度>以上是关于如果存在条目匹配,则 SQL 触发器从其他表中添加数据的主要内容,如果未能解决你的问题,请参考以下文章
如果在 Hive SQL 中找不到匹配项,则提供要加入的备用列