Depende del nivel de recursividad de los disparadores configurados actualmente en la base de datos.
Si haces esto:
SP_CONFIGURE 'nested_triggers',0
GO
RECONFIGURE
GO
O esto:
ALTER DATABASE db_name
SET RECURSIVE_TRIGGERS OFF
Ese activador anterior no volverá a activarse y estarás a salvo (a menos que entres en algún tipo de punto muerto; eso podría ser posible, pero tal vez me equivoque).
Aún así, no Creo que esta es una buena idea. Una mejor opción sería usar un EN LUGAR DE activador . De esa forma, evitaría ejecutar la primera actualización (manual) sobre la base de datos. Solo se ejecutará el definido dentro del disparador.
Un activador INSTEAD OF INSERT sería así:
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
Esto "reemplazaría" automáticamente la declaración INSERT original por esta, con una llamada SUPERIOR explícita aplicada a part_description
campo.
Un disparador EN VEZ DE ACTUALIZAR sería similar (y no le aconsejo que cree un solo disparador, manténgalos separados).
Además, esto aborda el comentario de @Martin:funciona para inserciones/actualizaciones de varias filas (su ejemplo no lo hace).