我有与价格表具有一对多关系的计划表。
(1个计划可以有很多价格)

但是问题是我还有一个名为“ StandardPrices”的表,其中包含所有价格的名称(其原因是我希望能够随时添加或删除价格)

 Plan Table:
 ID int primary key,
 plan Name varchar(200),
 ...

 PriceTable:
 ID int primary key,
 PlanId int foreign key references plan(ID)
 PriceName ID foreign key standardprices(id)

 StandardPrices:
 ID int primary key,
 PriceName varchar(200),
 DefaultPrice money


因此,无论何时创建计划,它都会自动创建StandardPrice列表中所有价格的列表(具有默认值)。

我遇到的问题是,每当我创建新的StandardPrice时,它都会自动检查每个计划中是否存在该价格,如果不存在,则在该价格表中为该Planid创建一个条目。

我使用存储过程,并认为最好的方法是通过SQL。

创建StandardPrices时:

   begin
   insert into StandardPrices (PriceName, Defaultprice)
       values (@priceName, @DefaultPrice)
   end

   begin
   //list all plans.
   //cross reference PriceTable to see if plan exists
   //if not insert priceplan with default value
   end


我有点困惑如何实现这样的sql命令?

最佳答案

我认为它看起来像这样:

insert into PriceTable (PlanId, PriceName)
select PlanId, @priceName
from Plan
where not exists
  (select null from PriceTable where PriceTable.PlanId = Plan.PlanId)


您可能应该将此操作作为数据库上INSERT触发器的一部分进行。

10-07 15:40