我有与价格表具有一对多关系的计划表。
(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触发器的一部分进行。