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

ayuda con un trigger

Estas en el tema de ayuda con un trigger en el foro de Bases de Datos General en Foros del Web. hola muchachos esto esta peluo asi k solo pa expertos y pro tengo un tabla en mysql 5 la cual la primary key es long ...
  #1 (permalink)  
Antiguo 10/04/2008, 08:00
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
ayuda con un trigger

hola muchachos esto esta peluo asi k solo pa expertos y pro

tengo un tabla en mysql 5 la cual la primary key es long int acendente(auto increment ) pero quiero cambiar la pk a varchar pero necesito un triger k me agrege un numero y se valla incrementando ademas de que se agrege una letra que yo elija al momento de hacer el trigger, esto tiene que ingresarse automaticamente cada vez que yo le pongo datos a los otros campos de la tabla. no puedo hacerlo toy chato ayudenme pliss

se k aki alguen me podraa ayudar o que haya hecho algo parecido


de antemanno gracias

Lee este tema==> Mejoremos la ortografía.

Última edición por BrujoNic; 11/04/2008 a las 19:05
  #2 (permalink)  
Antiguo 10/04/2008, 10:13
 
Fecha de Ingreso: abril-2008
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Re: ayuda con un trigger

Pues para empezar debes cambiar la definicion de la tabla, del int que comentas al varchar, el espacio depende de ttus necesidades

y con el query que necesitas para actualizar es algo asi:

-- este valor debe ser el autonumerico pk
@pkActual as int

@pkModificada as nvarhcar(longitud de pk en tu tabla)

-- aqui indicas la letra que quieres que contenga tu llave
set @pkModificada = 'letra'

-- aqui tendrias que concatenar la letra y el numero actual
set @pkModificada = @pkModificada + @pkActual

-- actualizas
update tutabla(
llavetabla
)
values
(
@pkModificada
)
where
llavetabla = @pkActual

saludos
  #3 (permalink)  
Antiguo 10/04/2008, 11:10
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: ayuda con un trigger

el trigger lo ejecuto desde php

pregunto por que recien estoy aprendiendo esto y es muy dificil


mi tabla es asi


codigo_sol_req(PK) bigint(20) ese lo voy a pasar a varchar
numero_serie(FK) varchar
descripcion_sol_req varchar
fecha_sol_req date
hora_sol_req time
trabajador_solicita_sol_req varchar
  #4 (permalink)  
Antiguo 11/04/2008, 07:40
 
Fecha de Ingreso: abril-2008
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Re: ayuda con un trigger

Mira en el trigger se cre en el manejador de la base de datos, en este caso seria mysql 5

esta es la estructura basica para la creacion de un trigger en mysql 5

CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt


para mas detalle esta pag. te puede ayudar con las instrucciones para la creacion de ellos si tienes alguina duda.

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

Saludos
  #5 (permalink)  
Antiguo 11/04/2008, 12:24
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: ayuda con un trigger

gracias por la ayuda
  #6 (permalink)  
Antiguo 14/04/2008, 07:56
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: ayuda con un trigger

Código:
CREATE TRIGGER miTrigger
ON dbo.miTalba
FOR INSERT, UPDATE 
AS

declare @pk as varchar(10/*el num que vos quieras*/)
set @pk=(select max pf from miTabla)

set @pk= cast (@pk as int)+1

declare @pkLetra as varchar(10/*el num que vos quieras*/)
set @pkfecha='Letra'

update miTabla  set codigo_sol_req=@pk + @pkLetra where codigo_sol_req=null or where codigo_sol_req=''

begin
	 RAISERROR (50015, 16, 10)
	 ROLLBACK TRANSACTION
end
Lo primiero que debes hacer es convertir tu pk as string y permitir null
cuadno hagas un insert ese registro sera en unico con null o vacio
Este trigger actualiza tu clave de ese registro null o vacio con los datos del pk mayor incrementandolo en 1 y concatenando la letra que elegiste.
luego si queres para mayor organizacion podes insertar un registro en la talba de mensajes de error con

Cita:
sp_addmessage 50015 ,
16 ,
'Error en la insercion del registro' ,
'us_english'
Espero que te sirva
Saludos
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 02:45.