Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   crear una llave alfanumerica con un generador (https://www.clubdelphi.com/foros/showthread.php?t=24355)

reina 17-08-2005 19:27:10

crear una llave alfanumerica con un generador
 
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:

Código SQL [-]
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

pregunta de duda
 
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...


La franja horaria es GMT +2. Ahora son las 10:16:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi