2017-06-06 57 views
0

我有一個在所有租戶之間共享的產品表。不過,每位租戶對於ProductRating表中存儲的每種產品都可以有自己的評級。當新產品插入到Product表中時,我需要一個觸發器爲每個承租人插入每個插入的產品的ProductRating表的默認評級。SQL Server:爲多租戶默認條目插入觸發器

我覺得這並不像我的大腦所做的那樣困難,但我無法得到它。

任何幫助表示讚賞。

爲了簡單:

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

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

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

Ĵ

+0

只是出於好奇,@marc_s,你爲什麼書名情況下,在文章標題得罪? –

+0

這是一個標題。如果你想讓它成爲一個句子,那麼你應該添加標點符號。 :o) –

+0

爲什麼要給我一個態度?您開始通過對您甚至沒有提供解決方案的帖子進行不必要的修改。對於您的編輯,我不認爲我對我的疑問很粗魯。正如我原來的帖子所包含的,正確的標題案例不會將「for」這個詞大寫。 –

回答

2

你可能會需要至少兩個觸發器 - 一個是當一個產品被添加到他們給它當違約評級爲所有現有租戶,和一個新的租戶被添加到它爲所有現有產品的默認評級。

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

謝謝@格林斯巴克。我知道我要讓它變得更加複雜。 –