2017-06-06 4 views
0

J'ai une table de produits partagée entre tous les locataires. Chaque locataire peut cependant avoir ses propres évaluations pour chaque produit stocké dans le tableau ProductRating. Lorsque de nouveaux produits sont insérés dans le tableau Product, je souhaite qu'un déclencheur insère une évaluation par défaut, pour chaque locataire, dans la table ProductRating pour chaque produit inséré.SQL Server: insertion de déclencheur pour les entrées par défaut multi-locataires

Je pense que ce n'est pas aussi difficile que mon cerveau le fait, mais je n'arrive pas à l'obtenir.

Toute aide est appréciée.

Pour simplifier:

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

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

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

J

+0

Juste par curiosité, @marc_s, pourquoi êtes-vous offensés par titre dans le cas titre de poste? –

+0

C'est un titre. Si vous voulez que ce soit une phrase, vous devriez ajouter de la ponctuation. : o) –

+0

Pourquoi me donner une attitude? Vous l'avez démarré en effectuant des modifications inutiles sur un post pour lequel vous n'avez même pas trouvé de solution. Je ne pense pas que j'étais impoli avec mes questions sur vos modifications. Et le titre approprié, comme mon post original contenait, ne capitaliserait pas le mot "pour". –

Répondre

2

Vous aurez probablement besoin d'au moins deux éléments déclencheurs - un pour quand un produit est ajouté pour lui donner une note par défaut pour tous les locataires existants, et un pour quand un nouveau locataire est ajouté pour lui donner une note par défaut pour tous les produits existants.

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 

et l'autre est assez facile de travailler à partir de là ...

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

Merci, @Greenspark. Je savais que je rendais les choses plus compliquées. –