PDA

Ver la Versión Completa : crear una llave alfanumerica con un generador


reina
17-08-2005, 19:27:10
hola bueno tengo una pregunta para hacerles, uso interbase y quiero crear un llave primaria que sea por ej 'EMP' + CODIGO..el codigo deberia ser autoincrementable y lo de adelante seria como un prefijo osea que la la llave seria un conjunto de caracteres..alfanumericos, para esto cree aparte un campo codigo que sea parte de la clave, y le cree un generador de autoincrementable y un trigger para que dispare ese generador antes de insertar. Yo deberia modificar el trigger para que convierte ese codigo generado en caractes..y asignarlo al campo ID principal formado por 'EMP ' + CODIGO. Me podrian decir como hago?...bueno aqui les pongo el triger para ver si esta bien echo tambien ...saludoss :cool:

AS
BEGIN
/* Trigger body */
if (empmovil."autoID" is null) then
empmovil."autoID"= gen_id("EMPMOVIL_autoID_GEN", 1);

END

maeyanes
17-08-2005, 19:43:34
Usa la función CAST de Interbase:


if (new.autoID is null) then
new.autoID = 'EMP' || cast(gen_id('EMPMOVIL_autoID_GEN', 1) as char(10));


Esto no lo he probado, pero no te debería dar problemas...


Saludos...

reina
17-08-2005, 19:47:03
tkss..pero estuve pensando...que pasa si aborto la trasaccion esto se genera =? puedo tener problemas de usar autoincrementables si necesito valores unicos? estos disparadores me parece que no se pueden controlar..o si?

maeyanes
17-08-2005, 19:49:44
No hay problema de que se te repitan valores usando generadores. El problema vendría que al abortar una transacción tuvieras saltos en tus llaves primarias. Por ejempo: EMP1, EMP2, EMP4, EMP5, EMP6, EMP8.


Saludos...