我有2张桌子。
create table Sales
(CustomerKey int
,ProductKey int
,CustomersProductsKey int
,SalesAmount decimal(19,4))
Create Table CustomersProducts
(CustomersProductsKey int IDENTITY(1,1),
CustomerKey int,
ProductKey int,
Attribute1 int,
Attribute2 varchar(max))
目前,当我向sales表添加数据时,我需要将任何新的customerkey productkey组合插入CustomersProducts表,然后使用生成的CustomersProductsKey标识值更新sales表。这很有效。
无论如何,我可以一步到位吗?我不知道Merge是否可以在相同但不匹配的步骤上进行插入和更新。
我也可能只是以错误的方式看待这个。
谢谢,
编辑:
您可以想象,我需要使用代理键的事实是设计的一部分。 BO报告需要它。否则就根本不需要CustomersProductsKey。
答案 0 :(得分:0)
如果只添加一步才能使其正常工作, 我认为我们需要创建另一个表并在新表和CustomersProducts上创建触发器
create table CustomersSalesProducts
(CustomerKey int
,ProductKey int
,SalesAmount decimal(19,4)
,Attribute1 int
,Attribute2 varchar(max))
create trigger test1 on CustomersSalesProducts After Insert
as
begin
insert Sales select CustomerKey , ProductKey , 0, SalesAmount from inserted
insert CustomersProducts select CustomerKey , ProductKey , Attribute1, Attribute2 from inserted
end
go
create trigger test2 on CustomersProducts after insert
as
begin
Update Sales set CustomersProductsKey = inserted.CustomersProductsKey
from inserted , Sales
where inserted.CustomerKey = Sales.CustomerKey
and inserted.ProductKey = Sales.ProductKey
end
go
测试脚本:
insert CustomersSalesProducts select 3,3,300,3,'Attribute2'