Estoy intentando crear un desencadenador simple usando TSQL (o SQL Server 2008). El problema es: mi activador actual está actualizando toda la tabla. Esto estuvo bien por un tiempo, pero ahora la tabla tiene más de 20k filas. Así que quiero un disparador que solo actualice las filas que se están insertando.Disparador que actualiza solo la fila insertada
Aquí es mi corriente de disparo simple:
CREATE TRIGGER trig_MyPplUpdate
ON [Persons]
FOR INSERT
AS
Begin
Update Persons
set MyFile = NULL
where Len(MyFile) < 60
End
creo que voy a tener que utilizar la tabla "insertada" o la función row_number
ordenada por la clave principal. ¿Algunas ideas?
Bien, déjenme aclarar esto: un disparador "En vez de" significa que ANTES de que se inserte, mi disparador se disparará? Honestamente, no entiendo lo que escribió (seleccione de insertado? ¿Luego MyFile?) Y tendré que investigar más sobre esto en Internet, pero creo que esto es lo que quiero = -). Si quieres hacer mi vida más fácil, me puedes explicar un poco más, pero lo que escribiste es el punto de partida que necesitaba. ¡Gracias una tonelada! – Gaspa79
@ Gaspa79 - Sí. SQL Server tomará su instrucción de inserción y construirá la pseudo tabla 'inserted' que tiene todas las columnas insertables de' [Persons] '. Luego selecciona de eso para hacer la inserción real en la tabla base. No proporcionó la estructura de su tabla, así que tuve que inventar los otros nombres de columna. –
Ok genial! Lo estoy intentando en este momento. Supongo que cuando Len (MyFile)> = THEN Myfile se debe a que si no se cumple esa condición, no insertará el valor de la columna, por lo tanto será nulo. En el otro caso, cuando esté satisfecho, insertará la columna (MiArchivo). muchas gracias hombre, en serio = -). – Gaspa79