2010-09-10 48 views
0

例如,如果我需要將單行的PK從1更改爲10,是否有任何方法可以跟蹤每個可能引用舊值的proc,view和function?如何跟蹤行級別依賴關係?

我的意思是,一個簡單的選擇,如:select * from table where FK = 1會中斷,我不得不尋找每個過程中的每個參考,並將其更改爲10以使系統正常工作。

有沒有這樣做的自動方式?我使用SQL SERVER。

回答

0

我懷疑正確地做到這一點的唯一方法就是查詢數據庫元數據 - 識別所有使用PK作爲FK,在proc或視圖中的位置。這可能很複雜;脆弱;並容易出錯。

這是避免將PK作爲系統派生出來的任何其他內容的許多原因之一,無意義的價值,(甚至)創建者/管理員無法操縱。另外,在什麼情況下,你會在一個proc或函數中使用硬編碼 - 這也是系統脆弱性的一個潛在來源。

如果創建的PK不正確(按任何標準)或需要更改哪個PK,請創建一個新記錄並將現有值複製到其中。雖然這不能回答您的查詢,但您的表中刪除或修改值的例程需要知道它的使用方式和位置;所以一個複製行的例程應該能夠訪問這些信息。