私はSQLに少し慣れていないので、SQL Server 2012で更新ステートメントをハードコーディングせずにこれを行う最良の方法を見つけようとしています.
基本的に、列 ( ) を持つ企業 (サプライ チェーンを考えてください) の階層テーブルがありますCompanyID, ParentID, ParentPriceAdj, CompanyPriceAdj。各会社には、親からテーブル内の定価を変更する価格調整が割り当てられ、PartMaster親から子に調整をカスケードすることによって最終的な価格が計算されます。
親の価格調整が更新された場合、それをすべての子会社に反映させたいなど
別名:
CompanyPriceAdj特定の を更新するとき、子の ( )updatedcompanyIDを再帰的に見つけて、それらを( )に更新したいCompanyIDParentId = updatedCompanyIDParentPriceAdjParentCompanyparentPriceAdj * (1 + CompanyPriceAdj)
CompanyId     ParentID     ParentPriceAdj    CompanyPriceAdj
  5               6              0.96               .10
  6               8              1                  .20
  7               6              0.96               .15
  8              11              1                   0
 10               6              0.96                0
 11              12              1                   0
私は、更新されたばかりのすべての子に対して更新を繰り返し呼び出し、その後自分の子を更新するストアドプロシージャを使用することを考えていました....会社に子がなくなるまで
私は周りを見回してみましたが、このような例は見つかりませんでした
これは私が今持っているものです
ALTER PROCEDURE [dbo].[UpdatePricing] 
@updatedCompanyID int, @PriceAdj decimal
AS
BEGIN
SET NOCOUNT ON;
    WHILE (Select CompanyID From CompanyInfo Where ParentID = @updatedCompanyID) IS NOT NULL
       UPDATE CompanyInfo 
       SET  ParentPriceAdj = @PriceAdj * (1+CompanyPriceAdj), 
            @updatedCompanyId = CompanyID, 
            @PriceAdj = CompanyPriceAdj         
       WHERE ParentID = @updatedCompanyID
       --- some method to call itself again for each (@updatedCompanyID, @PriceAdj)
END