BEFORE INSERT
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?
Subject
Views
Written By
Posted
BEFORE INSERT
1259
November 19, 2019 10:42AM
619
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.