disparador de MySQL realiza consultas toman tiempo ilimitado

Webdev:

Tengo una tabla que incluye los estudiantes siguientes campos

Student_Id int primary key

student_name varchar(50)

seat_number varchar(50)

level_id int foreign key

CREATE TABLE `students` (
`Student_Id` int(11) NOT NULL AUTO_INCREMENT,
`student_name` varchar(100) DEFAULT NULL,
`level_id` int(11) DEFAULT NULL,
`seat_number` varchar(50) DEFAULT NULL,
 KEY `Relationship17` (`level_id`),
 CONSTRAINT `Relationship17` FOREIGN KEY (`level_id`) REFERENCES `levels` (`Level_Id`) ON DELETE CASCADE ON UPDATE CASCADE)

Mi meta

Para establecer los valores únicos para el campo seat_number mediante consulta

FLOOR(rand() * 90000 + 10000)

Y luego a concat el resultado a un personaje basado en el valor de level_id.

Así que creo activador siguiente:

DELIMITER $$
CREATE TRIGGER seat_nu_trigger BEFORE INSERT ON students FOR EACH ROW
BEGIN
DECLARE x CHARACTER;
DECLARE cur cursor for select FLOOR(rand() * 90000 + 10000) from students;
open cur;
if NEW.level_id=1 THEN
set x = 'A';
ELSEIF
NEW.level_id=2 THEN
set x = 'B'; 
END IF;
getSeatNumber: LOOP
SET NEW.seat_number = concat(x,FLOOR(rand() * 90000 + 10000) );
END LOOP getSeatNumber;
CLOSE cur;
END;

El problema

Al insertar los datos a mi mesa no se inserta y la consulta tarda un tiempo ilimitado.

No puedo soltar el gatillo.

akina:
CREATE TRIGGER seat_nu_trigger 
BEFORE INSERT 
ON students 
FOR EACH ROW
SET NEW.seat_number = CONCAT(CASE NEW.level_id WHEN 1 THEN 'A'
                                               WHEN 2 THEN 'B'
                                               END, FLOOR(rand() * 90000 + 10000) );

PS-1. Si level_idse establece en alguna que no sea Ani Bentonces seat_numberserá NULL.

PS-2. seat_numberlongitud será variable. Piense en adicional LPAD().

PS-3. seat_numbersingularidad no está garantizada.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=277126&siteId=1
Recomendado
Clasificación