[英]Multiple Table Trigger Update/Delete/Insert
我遇到了創建SQL Server觸發器以實現我想要的操作的麻煩。 我對觸發器沒有多少經驗。
基本上我有一個表,我們稱之為cluster_metadata
,其元數據描述了對象的某些屬性。 然后我有第二個表,讓我們稱之為activities_table
,用戶輸入的數據可能與cluster_metadata
表中的某些對象有關。
cluster_metadata
表是用戶可更新的,但是使用存儲過程創建和刪除新行,用戶只能更新特定值。
activities_table
完全由用戶驅動,用戶可以插入/修改和刪除行。
我需要一個連接數據的觸發器,並在cluster_metadata
或activities_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_metadata
和activities_table
的數據創建一個聯合視圖。 從那里我編寫了一個存儲過程,該過程接收適當的數據並插入到第三個表中。 該過程還確保更新所有數據並與每次執行時的視圖匹配。 每當用戶從Web UI向任一表輸入任何內容時,我都會運行該過程。 不是最好的解決方案,但它正在發揮作用。
感謝大家!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.