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 プロダクトキーの組み合わせを CustomersProducts テーブルに挿入し、結果の CustomersProductsKey ID 値で sales テーブルを更新する必要があります。これは機能します。

ワンステップでこれを行うことができる方法はありますか?一致しない場合、マージが同じステップで挿入と更新を実行できるかどうかはわかりません。

私もこれを間違った方法で見ているだけかもしれません。

ありがとう、

編集:

ご想像のとおり、代理キーを使用する必要があるという事実は設計の一部です。BO レポートに必要です。そうでなければ、CustomersProductsKey はまったく必要ありません。

4

1 に答える 1

0

機能させるために1つのステップのみを追加する場合、別のテーブルを作成し、新しいテーブルと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 に答える