Зависи от нивото на рекурсия за тригери, зададени в момента в DB.
Ако направите това:
SP_CONFIGURE 'nested_triggers',0
GO
RECONFIGURE
GO
Или това:
ALTER DATABASE db_name
SET RECURSIVE_TRIGGERS OFF
Този тригер по-горе няма да бъде извикан отново и ще бъдете в безопасност (освен ако не попаднете в някаква задънена улица; това може да е възможно, но може би греша).
И все пак не го правя мисля, че това е добра идея. По-добър вариант би бил използването на ВМЕСТО задействане . По този начин ще избегнете изпълнението на първата (ръчна) актуализация през DB. Ще бъде изпълнен само този, дефиниран вътре в тригера.
Тригер INSTEAD OF INSERT би бил така:
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
Това автоматично ще "замени" оригиналния оператор INSERT с този, с изрично извикване UPPER, приложено към part_description
поле.
Тригер ВМЕСТО АКТУАЛИЗИРАНЕ би бил подобен (и аз не ви съветвам да създавате един тригер, дръжте ги разделени).
Също така, това се отнася до коментара на @Martin:работи за многоредови вмъквания/актуализации (вашият пример не работи).