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

Trigger en SQL 2008

Estas en el tema de Trigger en SQL 2008 en el foro de SQL Server en Foros del Web. Buenas Tardes, tengo una tabla con los datos personales de empleados y necesito que cada vez que se inserte un registro en la tabla de ...
  #1 (permalink)  
Antiguo 18/09/2011, 16:18
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Trigger en SQL 2008

Buenas Tardes, tengo una tabla con los datos personales de empleados y necesito que cada vez que se inserte un registro en la tabla de empleados , me cree un codigo consecutivo el cual debe ir incrementando en 1. El consecutivo debe almacenarse en el campo Cod2 de la tabla empleado. estoy trabajando con SQL 2008
Tabla de empleados:
CREATE TABLE empleado(
id_empleado varchar(15) NOT NULL,
nombre varchar(30) NULL,
seg_nombre varchar(30) NULL,
apellido varchar(30) NULL,
segun_apellido varchar(30) NULL,
cod2 varchar(15) NULL
estado
constraint pk_empleado primary key (id_empleado)
);


Lo que estaba tratando de crear es un trigger que incremente el campo cod2 pero no me funciona
CREATE TRIGGER tecno.mi_consecutivo
ON tecno.empleado
FOR UPDATE
AS
DECLARE @consec varchar (15)
SELECT @conteo= count (empleado) from tecno.empleado
where estado ='A' and
cod2 is NUll
IF @conteo >= 1
begin
Select Max(@Consec)+1
from empleado
Where cod2=@Consec
into @Consec
end

Ya estoy bien confundida agradezco quien me pueda colaborar... Gracias
  #2 (permalink)  
Antiguo 19/09/2011, 11:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Trigger en SQL 2008

Tu trigger lo estas haciendo FOR UPDATE, ¿No deberia ser FOR INSERT?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 21/09/2011, 12:14
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Trigger en SQL 2008

Efectivamente el trigger debe ser un insert, lo que hice fue crear un trigger que me nuestre los empleados que han ingresado,

TRIGGER codigo_ins ON empleado
FOR INSERT
AS
INSERT INTO consecutivo (id_empleado, codigo2, fecha, accion)
SELECT empleado, codigo2, getdate(), 'insert' FROM INSERTED

Esta información la inserta en otra tabla

Ahora el problema es que el campo codigo2, que viene de la tabla empleado es de tipo NULL y esta es la columna que necesito que me guarde el consecutivo.

una vez obtega el consecutivo en la columna codigo2 debo actualizar la tabla el campo codigo2 para el empleado.

Gracias....
  #4 (permalink)  
Antiguo 21/09/2011, 12:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Trigger en SQL 2008

Si tu CODIGO2 es un autoincremental, desconozco si debas hacerlo AFTER (despue de).

Lo que no me gusta de tu codigo, es que quieras utilizar un TRIGGER para lo que no fueron creados.

Creo, desde mi punto de vista, que dicha INSERCCION deberia estar en el cuerpo del STORE PROCEDURE que aplique el insert en EMPLEADO, para una vez concretado, insertar en CONSECUTIVO.
__________________
MCTS Isaias Islas

Etiquetas: select, sql, tabla, trigger, campos
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 19:28.