我有創建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 |
+---------------------------------------------------------------------+
我將如何創建一個觸發器來做到這一點?我只是創建一個視圖,但有一些用戶額外的輸入,我需要接受使用這個合併的數據。
謝謝!
爲什麼你需要一個觸發器來更新第三個表?爲什麼不創建一個代表兩個表連接在一起的視圖? – d89761 2015-02-24 21:18:43
將問題看作是學術問題,您需要在表1和表2中引發觸發器,每個觸發器都將插入和刪除的表與第三個表進行比較,並對該表執行所需的插入/更新/刪除操作。 – 2015-02-24 21:24:28
將「附加輸入」保留在第三個表中,並在視圖中加入這3個表? – MWillemse 2015-02-24 21:47:16