MySQL Forums
Forum List  »  Triggers

BEFORE INSERT
Posted by: Manuel Balleza
Date: November 19, 2019 10:42AM

Buen día necesito que al insertar en la tabla "trigger_demo" se genere un ID autocomplete y un localizador de 6 digitos aleatorio. Este es mi script.

BEGIN

DECLARE localizador_nuevo VARCHAR( 6 );
DECLARE localizador_duplicado VARCHAR( 6 );

genera_localizador: LOOP

SELECT
CONCAT(
-- CHAR( FLOOR( RAND( ) * ( 90 - 65 + 1) + 65 ) ), -- Letra mayuscula
CHAR( FLOOR( RAND( ) * ( 57 - 49 + 1) + 49 ) ) -- , -- Digito [1-9]
-- CHAR( FLOOR( RAND( ) * ( 90 - 65 + 1) + 65 ) ), -- Letra mayuscula
-- CHAR( FLOOR( RAND( ) * ( 57 - 49 + 1) + 49 ) ), -- Digito [1-9]
-- CHAR( FLOOR( RAND( ) * ( 90 - 65 + 1) + 65 ) ) -- Letra mayuscula
)
INTO localizador_nuevo;

SELECT localizador FROM trigger_demo WHERE localizador = localizador_nuevo INTO localizador_duplicado;

IF localizador_duplicado IS NULL THEN

SET NEW.localizador = localizador_nuevo;

LEAVE genera_localizador;

END IF;

END LOOP genera_localizador;

END


Sin embargo, al encontrar un elemento duplicado, la consulta hace loop y se vuelve infinita...

La idea es que al encontrar un localizador duplicado, se repita la creación aleatorio y una ves que no haya duplicidad se asigne el valor a la columna "SET NEW.localizador = localizador_nuevo;"


Que estoy haciendo mal?

Options: ReplyQuote


Subject
Views
Written By
Posted
BEFORE INSERT
1005
November 19, 2019 10:42AM
495
November 19, 2019 01:14PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.