2015-02-24 122 views
0

我有創建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 | 
+---------------------------------------------------------------------+ 

我將如何創建一個觸發器來做到這一點?我只是創建一個視圖,但有一些用戶額外的輸入,我需要接受使用這個合併的數據。

謝謝!

+2

爲什麼你需要一個觸發器來更新第三個表?爲什麼不創建一個代表兩個表連接在一起的視圖? – d89761 2015-02-24 21:18:43

+0

將問題看作是學術問題,您需要在表1和表2中引發觸發器,每個觸發器都將插入和刪除的表與第三個表進行比較,並對該表執行所需的插入/更新/刪除操作。 – 2015-02-24 21:24:28

+0

將「附加輸入」保留在第三個表中,並在視圖中加入這3個表? – MWillemse 2015-02-24 21:47:16

回答

0

感謝您的幫助。基本上我最終做的是用來自cluster_metadataactivities_table的數據創建一個聯合視圖。從那裏我編寫了一個存儲過程,它獲取適當的數據並插入到第三個表中。該過程還確保所有數據都更新並與每次執行時的視圖相匹配。從那裏我每次用戶輸入任何內容到Web UI中的任何一個表格時都會運行該過程。不是最好的解決方案,但它的工作。

謝謝大家!