因此,假設我們有一個表t1
,我們需要將每個插入的行復制到t2
中,並在它們之間放置外鍵鏈接。讓我告訴我的意思:有沒有辦法在視圖中獲取插入的縮進?
我們有表T1
-----------------------------
| id | value | external_id|
-----------------------------
| | | |
-----------------------------
和表T2
----------------
| id | value |
----------------
| | |
----------------
其中id列具有IDENTITY標記和EXTERNAL_ID是一個鏈接到t2.id(I」將在下面解釋)
我們打算將行(value ='TEST')插入到表t1中。預期的結果是這樣的:
-----------------------------
| id | value | external_id|
-----------------------------
| 123| TEST | 345 |
-----------------------------
和表T2
----------------
| id | value |
----------------
| 345| TEST |
----------------
algorythm的主要思想是基於觸發器:在INSTEAD OF
觸發對錶1我做的:
- 插入到t1並記住插入的ID在一個單獨的表中使用
OUTPUT
子句 - 插入到t2並記住馬使用映射
與OUTPUT
external_id
柱再次pping (t1.id, t2.id)
但是,有一些我不明白怎麼打的一些問題:
- T1實際上不是一個表,它是一個視圖與
INSTEAD OF
觸發器(但這不是一個問題) - t2也是一個觸發視圖,這是一個問題,因爲我不能從它插入的ID
- 此外t2是一個遠程視圖 - 這是一個大問題,因爲在使用遠程視圖時存在一些限制
所以,也許我正朝着一個錯誤的方向前進?有沒有辦法解決我的問題,而不使用光標和存儲過程在t1上的觸發器? (我的意思是我知道有一種方法可以通過存儲過程將所有數據存入t2,並在該過程的OUTPUT參數中獲取插入的id,但也許有更優雅的方式?)
不幸的是我不能在遠程表或視圖上使用OUTPUT子句。所以可能存儲過程是唯一的選擇。 – Dima
因此,您正在創建sp以在t2坐的服務器上執行t2插入,對嗎?所以你仍然會先執行t2插入,然後使用返回的id來執行t1插入。 – Bill
不,目前的解決方案是這樣的:1.插入t1。 2.將數據打包到xml中,並將其插入帶有sp的t2中。 3.更新t1 – Dima