0

我有 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 表。这行得通。

无论如何,我可以一步完成吗?我不知道合并是否可以在不匹配的步骤上进行插入和更新。

我也可能只是以错误的方式看待这个问题。

谢谢,

编辑:

您可以想象,我需要使用代理键这一事实是设计的一部分。BO 报告需要它。否则根本就不需要CustomersProductsKey。

4

1 回答 1

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

测试脚本:</p>

insert CustomersSalesProducts select 3,3,300,3,'Attribute2'
于 2013-06-14T07:59:22.173 回答