tengo la mesa Tb
¿Cómo puedo editar los valores de un INSERT en un desencadenador en SQL Server?
ID | Name | Desc
-------------------------
1 | Sample | sample desc
Quiero crear un disparador en INSERT que cambiará el valor de la Desc
insertando, por ejemplo:
INSERT INTO Tb(Name, Desc) VALUES ('x', 'y')
resultará en
ID | Name | Desc
-------------------------
1 | Sample | sample desc
2 | x | Y edited
En el ejemplo anterior obtuve el valor de la inserción Desc
lo cambié a mayúscula y una dded edited
en el extremo.
Eso es lo que necesito, obtenga el Desc
que se está insertando y modifíquelo.
¿Cómo puedo hacer eso?
¿Es mejor manejarlo después de la inserción con una actualización? ¿O hacer un disparador con INSTEAD OF INSERT y modificarlo cada vez que la estructura de la tabla cambie?
¿No puedes hacer esto de otra manera? Personalmente odio cuando veo cosas extrañas sucediendo en los datos y finalmente me doy cuenta de que un disparador fantasma estaba haciendo algunas cosas –
Lo usaré para solucionar un problema que proviene de un código al que no tengo acceso. Inserta la 'url' de un elemento, pero no elimina acentos ni caracteres especiales, haré que un desencadenador lo haga por mí. – BrunoLM
Este no es un concepto tan difícil y me hace pensar que Microsoft no puede proporcionar una funcionalidad tan simple como en Oracle, donde puede modificar cualquier valor antes de insertar editando los valores: NEW. es decir, si quiero siempre asignar los nombres de usuario a la parte superior antes de insertarlos (suponiendo que no puedo hacerlo en el código por algún motivo), podría tener un desencadenante insert anterior que lo haga: NEW.nombredeusuario: = UPPER (: NEW.nombredeusuario)) Sin embargo, en el Servidor SQL, no puede hacer el equivalente con valores en la tabla temporal INSERTADA, y eso realmente apesta. – Jim