Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Modificar multiples registros con un solo trigger

Estas en el tema de Modificar multiples registros con un solo trigger en el foro de SQL Server en Foros del Web. Hola a todos. Tengo una tabla de periodo, en la cual, solamente se inserta un registro por año, ejemplo id Descripcion 1 2012 2 2013 ...
  #1 (permalink)  
Antiguo 31/10/2012, 07:43
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Modificar multiples registros con un solo trigger

Hola a todos.

Tengo una tabla de periodo, en la cual, solamente se inserta un registro por año, ejemplo
id Descripcion
1 2012
2 2013


y otra tabla de alumnos con los datos de los alumnos de un colegio, lo que deseo hacer es esto, que al insertar un nuevo registro en la tabla de Periodo, se actualice un campo bit en la tabla de alumnos que es alumnoNuevo, todos los que estan en 1 que pase a 0, ya que al insertar un nuevo alumno el campo esta en 1, esto para tener una cuenta de los alumnos nuevos por periodo.

Ojala lo hayan entendido y puedan ayudarme, desde ya muchas gracias.
  #2 (permalink)  
Antiguo 31/10/2012, 09:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

constraints, update en cascada, triggers.......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 31/10/2012, 10:36
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

ya tengo un trigger al insertar un nuevo registro en Periodo, es basicamente esto
update Alumno set
AlumnoNuevo = 0
where AlumnoNuevo = 1

pero no funciona..
  #4 (permalink)  
Antiguo 31/10/2012, 10:37
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
constraints, update en cascada, triggers.......
ya tengo un trigger al insertar un nuevo registro en Periodo, es basicamente esto
update Alumno set
AlumnoNuevo = 0
where AlumnoNuevo = 1

pero no funciona..
  #5 (permalink)  
Antiguo 31/10/2012, 10:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

y como esta tu trigger(codigo)??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 31/10/2012, 11:10
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
y como esta tu trigger(codigo)??
ALTER TRIGGER [dbo].[trg_Periodo1]
ON [dbo].[Periodo]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here


update Alumno set
AlumnoNuevo = 0
where AlumnoNuevo = 1
END
  #7 (permalink)  
Antiguo 31/10/2012, 11:17
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

el error que me da es que produce mas de un resultado, ya que hay muchos registros con el campo "1" que hay que modificar, ese es el error que no consigo sulucionar :(
  #8 (permalink)  
Antiguo 31/10/2012, 11:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

de que produce mas de un resultado claro que si, porque estas actualizando toda la tabla donde alumnonuevo=1, dices que hay muchos registros con 1 y quieres actualizar estos a 0 entonces???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 31/10/2012, 11:29
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por libras Ver Mensaje
de que produce mas de un resultado claro que si, porque estas actualizando toda la tabla donde alumnonuevo=1, dices que hay muchos registros con 1 y quieres actualizar estos a 0 entonces???
exactoooo :-p
  #10 (permalink)  
Antiguo 31/10/2012, 12:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

y si haces un

select * from alumno where alumnonuevo=1 que te regresa?

el trigger te actualiza tooooodos los alumnosnuevos a 0?

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 02/11/2012, 07:25
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
y si haces un

select * from alumno where alumnonuevo=1 que te regresa?

el trigger te actualiza tooooodos los alumnosnuevos a 0?

saludos!
al hacer eso tendria que traer todos los alumnos que tengan AlumnoNuevo = 1, una lista de casi 100 registros seria, el trigger como lo hice no actualiza nada porq me tira ese error, yo creo que deberia hacer un bucle o algo pero no tengo idea de como hacerlo..
  #12 (permalink)  
Antiguo 02/11/2012, 09:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

lo que no entiendo es que error te "tira" este trigger, con un trigger puedes actualizar mas de un registro....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 02/11/2012, 11:14
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
lo que no entiendo es que error te "tira" este trigger, con un trigger puedes actualizar mas de un registro....
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
Se terminó la instrucción.


ESTE es el error que me tira cuando quiero insertar un registro en Periodo
el triger es el que pase anteriormente, asi mismo, no se que hacer :(
  #14 (permalink)  
Antiguo 02/11/2012, 11:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

Código SQL:
Ver original
  1. --creamos la tabla alumno
  2.  
  3. CREATE TABLE alumno
  4. (
  5. nombre VARCHAR(20),
  6. STATUS INT
  7. )
  8.  
  9. --insertamos 3 registros con status=1
  10. INSERT INTO alumno VALUES ('pedro',1)
  11. INSERT INTO alumno VALUES ('juan',1)
  12. INSERT INTO alumno VALUES ('jose',1)
  13.  
  14. -los datos de alumno vemos STATUS=1
  15.  
  16. SELECT * FROM alumno
  17.  
  18. nombre               STATUS
  19. -------------------- -----------
  20. pedro                1
  21. juan                 1
  22. jose                 1
  23.  
  24.  
  25. --se crea la tabla periodo
  26. CREATE TABLE periodo
  27. (
  28. periodo datetime
  29. )
  30.  
  31. --insertamos 2 datos en la tabla periodo
  32. SELECT * FROM periodo
  33.  
  34. periodo
  35. -----------------------
  36. 2012-11-02 11:41:57.303
  37. 2012-11-02 11:42:06.380
  38.  
  39. --creamos el trigger
  40.  
  41. CREATE TRIGGER [dbo].[trg_Periodo]
  42. ON [dbo].[Periodo]
  43. AFTER INSERT
  44. AS
  45. BEGIN
  46. -- SET NOCOUNT ON added to prevent extra result sets from
  47. -- interfering with SELECT statements.
  48. SET NOCOUNT ON;
  49.  
  50. -- Insert statements for trigger here
  51. UPDATE Alumno SET
  52. STATUS = 0
  53. WHERE STATUS = 1
  54. END
  55.  
  56.  
  57.  
  58.  
  59. --insertamos un valor en la tabla periodo
  60. INSERT INTO periodo VALUES (GETDATE()+30)
  61.  
  62. --vemos que en periodo hay un dato de mas y...
  63. periodo
  64. -----------------------
  65. 2012-11-02 11:41:57.303
  66. 2012-11-02 11:42:06.380
  67. 2012-12-02 11:44:13.773
  68.  
  69.  
  70. --la tabla de alumnos quedaron todos con status=0
  71. SELECT * FROM alumno
  72.  
  73. nombre               STATUS
  74. -------------------- -----------
  75. pedro                0
  76. juan                 0
  77. jose                 0
  78.  
  79. --tu como lo estas haciendo? no tienes asi tus datos??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 02/11/2012, 12:20
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

ni al hacer una nueva consulta, solamente con
update Alumno set
AlumnoNuevo = 0
where AlumnoNuevo = 1

me devuelve ese mismo error, no entiendo porq, y ese ejemplo que tienes es algo similar a lo mio.
  #16 (permalink)  
Antiguo 02/11/2012, 12:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

no tienes un trigger en la tabla de alumno???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #17 (permalink)  
Antiguo 02/11/2012, 13:09
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
no tienes un trigger en la tabla de alumno???
pues ahora que lo mencionas si tengo, eso es lo que le afecta no??, solo que ese trigger que tengo ahi es muuy importante, no hay algun comando para omitir el trigger y que haga la actualizacion??, es que insertar un nuevo periodo se hace a travez de un software nada mas, entrar a hacer eso a nivel sql seria mucho pedir para alguien que no sabe nada de eso, me refiero a las personas que usas mi software jeje
  #18 (permalink)  
Antiguo 02/11/2012, 13:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

depende de que es lo que haga tu trigger, si tu trigger es un after update y hace algo entonces podrias poner una validacion que diga que cuando sea mas de un registro el que llega al trigger entonces que no realice las opciones del trigger en caso contrario que haga el codigo del trigger :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 03/11/2012, 05:48
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
depende de que es lo que haga tu trigger, si tu trigger es un after update y hace algo entonces podrias poner una validacion que diga que cuando sea mas de un registro el que llega al trigger entonces que no realice las opciones del trigger en caso contrario que haga el codigo del trigger :)

saludos!
efectivamente es after update, pero no tengo idea de como hacer eso que dices :(, me pondrias un ejemplo por favor?, seria de gran ayuda..
  #20 (permalink)  
Antiguo 05/11/2012, 09:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 15 años
Puntos: 774
Respuesta: Modificar multiples registros con un solo trigger

Código SQL:
Ver original
  1. CREATE TRIGGER ON tabla after UPDATE
  2. AS
  3. BEGIN
  4.  
  5. DECLARE @COUNT INT
  6. SELECT @COUNT=conut(*) FROM deleted
  7. IF @COUNT=1
  8. BEGIN
  9. tus instrucciones
  10. END
  11.  
  12. END
algo asi :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #21 (permalink)  
Antiguo 06/11/2012, 06:30
 
Fecha de Ingreso: enero-2011
Mensajes: 39
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Modificar multiples registros con un solo trigger

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. CREATE TRIGGER ON tabla after UPDATE
  2. AS
  3. BEGIN
  4.  
  5. DECLARE @COUNT INT
  6. SELECT @COUNT=conut(*) FROM deleted
  7. IF @COUNT=1
  8. BEGIN
  9. tus instrucciones
  10. END
  11.  
  12. END
algo asi :)
Disculpa que recien respondo amigo, es que estuve fuera por un tiempo, gracias por tu tiempo y consejos, probare este ejemplo que me pasaste :), mil gracias..

Etiquetas: multiples, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:49.