繁体   English   中英

多表触发更新/删除/插入

[英]Multiple Table Trigger Update/Delete/Insert

我遇到了创建SQL Server触发器以实现我想要的操作的麻烦。 我对触发器没有多少经验。

基本上我有一个表,我们称之为cluster_metadata ,其元数据描述了对象的某些属性。 然后我有第二个表,让我们称之为activities_table ,用户输入的数据可能与cluster_metadata表中的某些对象有关。

cluster_metadata表是用户可更新的,但是使用存储过程创建和删除新行,用户只能更新特定值。

activities_table完全由用户驱动,用户可以插入/修改和删除行。

我需要一个连接数据的触发器,并在cluster_metadataactivities_table任何修改时更新表。

为简单起见,我已经减少了列数,但表格看起来像这样。

cluster_metadata

+----------------------------------+
|  Cluster  |  Eligible  |  Group  |
+----------------------------------+
|  Cluster1 |    True    |    1    |
|  Cluster2 |    True    |    1    |
|  Cluster3 |    True    |    2    |
|  Cluster4 |    False   |    2    |
|  Cluster5 |    True    |    3    |
|  Cluster6 |    True    |    4    |
+----------------------------------+

activities_table

+--------------------------------------------+
|  Activity  |  ID  |  Group  |  Start Date  |
+--------------------------------------------+
|  Patches   | 1000 |    1    |  02-01-2015  |
|  Patches   | 1000 |    2    |  02-10-2015  |
|  Patches   | 1000 |    3    |  02-20-2015  |
|SomeActivity| 1001 |    2    |  02-30-2015  |
+--------------------------------------------+

我需要创建并保持更新的表使用上面两个表中的数据看起来像这样:

+---------------------------------------------------------------------+
|  Cluster  |  Eligible  |  Group  |  Activity  |  ID  |  Start Date  |
+---------------------------------------------------------------------+
|  Cluster1 |    True    |    1    |  Patches   | 1000 |  02-01-2015  |
|  Cluster2 |    True    |    1    |  Patches   | 1000 |  02-01-2015  |
|  Cluster3 |    True    |    2    |  Patches   | 1000 |  02-10-2015  |
|  Cluster3 |    True    |    2    |SomeActivity| 1001 |  02-30-2015  |
|  Cluster4 |    True    |    2    |  Patches   | 1000 |  02-10-2015  |
|  Cluster4 |    True    |    2    |SomeActivity| 1001 |  02-30-2015  |
|  Cluster5 |    True    |    3    |  Patches   | 1000 |  02-20-2015  |
+---------------------------------------------------------------------+

我如何创建一个可以执行此操作的触发器? 我只是创建一个视图,但我需要使用这个合并数据接受一些用户额外的输入。

谢谢!

感谢你的帮助。 基本上我最终做的是使用来自cluster_metadataactivities_table的数据创建一个联合视图。 从那里我编写了一个存储过程,该过程接收适当的数据并插入到第三个表中。 该过程还确保更新所有数据并与每次执行时的视图匹配。 每当用户从Web UI向任一表输入任何内容时,我都会运行该过程。 不是最好的解决方案,但它正在发挥作用。

感谢大家!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM