2016-05-24 5 views
0

私はテーブルを持っています。各顧客のタイプにCustomers(CustomerType, Name)と2ビュー:ビューに挿入し、基になるテーブルのデフォルト値を使用します。

create view PremiumCustomers as 
(
    select Name from Customers where CustomerType = 1 
); 

create view NormalCustomers as 
(
    select Name from Customers where CustomerType = 2 
); 

私はこれらの各ビューに挿入し、それに応じてCustomerTypeのデフォルト値を設定することができます方法はありますか?

使用して:

INSERT INTO PremiumCustomers (name) VALUES ('foo') 

Customersテーブルに('foo',2)を挿入します。

+0

のように試してみてください。 – dean

+0

あなたは右の学長です。 – StackUser

答えて

1

は、トリガーの代わりに-のAnが移動するための方法である。この

CREATE TRIGGER TrPremiumCustomersInsteadTrigger on PremiumCustomers 
INSTEAD OF INSERT 
AS 
BEGIN 
    INSERT INTO Customers (Name, CustomerType) 
     SELECT Name, 1 
     FROM inserted 
END; 


CREATE TRIGGER TrNormalCustomersInsteadTrigger on NormalCustomers 
INSTEAD OF INSERT 
AS 
BEGIN 
    INSERT INTO Customers (Name, CustomerType) 
     SELECT Name, 2 
     FROM inserted 
END; 

INSERT INTO PremiumCustomers (name) VALUES ('foo') 
INSERT INTO NormalCustomers (name) VALUES ('foo') 
+0

したがって、すべてのCustomerTypeに対してトリガーを設定する必要がありますか?これにはパフォーマンス上の問題はありますか? – xpy

+0

@xpy - あなたの*要件*に合った唯一のソリューションのように見えるので、パフォーマンス上の問題があるかどうか尋ねるのはなぜですか? –

+0

ビューを使用してバルクロードすると、パフォーマンスが低下する可能性があります。 – StackUser

関連する問題