Je veux créer un triggersur dans SQL Server 2012 qui s'active lorsque j'insère une ligne dans une table spécifique.
Le triggersur doit insert une valeur dans une colonne spécifique, dans la même table et la ligne dans laquelle j'insère la nouvelle ligne.
Le triggersur ne doit être activé que si une colonne spécifique de la ligne que j'insère n'a pas de valeur. nul.
Disons que j'insère dans:
car
car_make | car_price | car_img
car_make | car_price | car_img
Si je fournis toutes les valeurs dans l'insertion:
car_make | car_price | car_img
le triggersur ne doit pas s'activer
Mais, si j'insère seulement des valeurs pour 2 colonnes:
car_make | car_price
la valeur car_img
est null, alors sortinggger doit s'activer et effectuer les opérations suivantes:
car_img
de la même ligne affectée PS. Je dois utiliser un triggersur, c'est pour une affectation. Je ne peux pas utiliser une valeur par défaut.
Create Trigger tr_ForInserts_car ON dbo.car FOR INSERT AS BEGIN SET NOCOUNT ON; UPDATE Car SET car_make = /*Your Default Value*/ WHERE car_make IS NULL UPDATE Car SET car_price = /*Your Default Value*/ WHERE car_price IS NULL UPDATE Car SET car_img = /*Your Default Value*/ WHERE car_img IS NULL END
modifier
Ma suggestion précédente mettra à jour toutes les lignes où la colonne correspondante est nulle, pour mettre à jour seulement la colonne pour les lignes nouvellement insérées, essayez la suivante s'il vous plaît
Create Trigger tr_ForInserts_car ON dbo.car FOR INSERT AS BEGIN SET NOCOUNT ON; UPDATE Car SET Car.car_make = /*Your Default Value*/ FROM Car INNER JOIN inserted ON Car.PrimaryKey = inserted.PrimaryKey WHERE Car.car_make IS NULL UPDATE Car SET Car.car_price = /*Your Default Value*/ FROM Car INNER JOIN inserted ON Car.PrimaryKey = inserted.PrimaryKey WHERE Car.car_price IS NULL UPDATE Car SET Car.car_img = /*Your Default Value*/ FROM Car INNER JOIN inserted ON Car.PrimaryKey = inserted.PrimaryKey WHERE Car.car_img IS NULL END