2017-06-06 6 views
0

すべてのテナントで共有される製品の表があります。ただし、各テナントは、ProductRatingテーブルに格納されている製品ごとに独自の評価を持つことができます。新製品がProductテーブルに挿入されると、挿入された各製品のProductRatingテーブルに、各テナントのデフォルト評価を挿入するトリガーが必要になります。SQL Server:マルチテナントの既定のエントリの挿入トリガー

これは私の脳が作っているほど難しくないと思っていますが、私はそれを得ることができません。

何か助けていただければ幸いです。簡単にするために

:あなたはおそらく、少なくとも2つのトリガーが必要になります

|-----------------------| 
|  Tenant   | 
|-----------------------| 
| TenantId | TenantName | 
|-----------------------| 

|--------------------------| 
|   Product   | 
|--------------------------| 
| Product ID | ProductName | 
|--------------------------| 

|-------------------------------| 
|   ProductRating  | 
|-------------------------------| 
| TenantId | ProductId | Rating | 
|-------------------------------| 

J

+0

ただ、好奇心から、@marc_s、なぜあなたは記事のタイトルにタイトルケースによっておこっていますか? –

+0

タイトルです。それを文にしたい場合は、句読点を追加する必要があります。 :o) –

+0

なぜ私に態度を与えますか?あなたは解決策を提供していない投稿に対して不必要な編集を実行することでそれを開始しました。私はあなたの編集についての私の質問に失礼だとは思わない。そして、私の元の投稿が含まれているように、適切なタイトルの場合、 "for"という単語を大文字にしません。 –

答えて

2

- 製品はそれをすべての既存のテナントのデフォルト評価を与えるために追加されたときに1つ、およびのための1つを新しいテナントが追加され、既存のすべての製品のデフォルトの評価が与えられます。

CREATE TRIGGER DefaultRatingsByNewTenant ON Tenant 
FOR INSERT 

AS 

Begin 

    INSERT into ProductRating(TenantID, ProductID, Rating) 

    SELECT 
     i.TenantID 
     , p.ProductID 
     , 5 as defaultRating 
    FROM 
     inserted i 
     cross join Product p 

end 

や他のそこから出て仕事をするのは簡単です...

CREATE TRIGGER DefaultRatingsByNewProduct ON Product 
FOR INSERT 

AS 

Begin 

    INSERT into ProductRating(TenantID, ProductID, Rating) 

    SELECT 
     t.TenantID 
     , i.ProductID 
     , 5 as defaultRating 
    FROM 
     inserted i 
     cross join tenant t 

end 
+0

ありがとう、@Greenspark。私はもっ​​と複雑にしていなければならないことを知っていました。 –

関連する問題