У меня есть таблица студентов, которая включает в себя следующие поля
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)
Моя цель
Установить уникальные значения в поле seat_number с помощью запроса
FLOOR(rand() * 90000 + 10000)
А затем объединить результат с символом на основе Значение level_id.
Поэтому я создаю следующий триггер:
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;
Проблема
Когда я вставляю какие-либо данные в свою таблицу, это не вставлен и запрос занимает неограниченное время.
Я не могу сбросить курок.