Cela dépend du niveau de récursivité des déclencheurs actuellement définis sur la base de données.
Si vous faites ceci :
SP_CONFIGURE 'nested_triggers',0
GO
RECONFIGURE
GO
Ou ceci :
ALTER DATABASE db_name
SET RECURSIVE_TRIGGERS OFF
Ce déclencheur ci-dessus ne sera plus appelé, et vous seriez en sécurité (à moins que vous ne vous retrouviez dans une sorte d'impasse ; cela pourrait être possible, mais peut-être que je me trompe).
Pourtant, je ne le fais pas pense que c'est une bonne idée. Une meilleure option serait d'utiliser un déclencheur AU LIEU DE . De cette façon, vous éviterez d'exécuter la première mise à jour (manuelle) sur la base de données. Seul celui défini à l'intérieur du déclencheur serait exécuté.
Un déclencheur INSTEAD OF INSERT ressemblerait à ceci :
CREATE TRIGGER setDescToUpper ON part_numbers
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO part_numbers (
colA,
colB,
part_description
) SELECT
colA,
colB,
UPPER(part_description)
) FROM
INSERTED
END
GO
Cela "remplacerait" automatiquement l'instruction INSERT d'origine par celle-ci, avec un appel UPPER explicite appliqué à la part_description
champ.
Un déclencheur INSTEAD OF UPDATE serait similaire (et je ne vous conseille pas de créer un seul déclencheur, gardez-les séparés).
En outre, cela répond au commentaire de @Martin :cela fonctionne pour les insertions/mises à jour multilignes (ce n'est pas le cas de votre exemple).