Мне нужна помощь в отношении процедуры SQL. Я пробовал и делал все, что мог, но нижеследующая процедура не работала, нужна помощь, почему она не работает,
CREATE PROCEDURE updateUser
(IN ID INT(11),
name VARCHAR(100),
email VARCHAR(100),
role VARCHAR(9),
gender VARCHAR(6),
birthday VARCHAR(10),
classroom INT(11) )
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
IF EXISTS (SELECT * FROM student WHERE userID = ID)
BEGIN
UPDATE tbl_users
SET userName = name, userEmail = email, userRole = role,
gender = gender, birthday = birthday
WHERE userID = ID;
UPDATE student
SET classID = classroom
WHERE userID = ID;
END
ELSE
BEGIN
UPDATE tbl_users
SET userName = name, userEmail = email, userRole = role,
gender = gender, birthday = birthday
WHERE userID = ID;
INSERT INTO student(classID, userID)
VALUES (classroom, ID);
END
COMMIT TRANSACTION;
Выше обновления в студенческий запрос и вставка в запрос работают как индивидуально. Но не при вставке IF EXISTS
.
Поскольку вы используете MySQL. Попробуйте приведенный ниже код и посмотрите, работает ли он,
CREATE PROCEDURE updateUser
(IN ID INT(11),
name VARCHAR(100),
email VARCHAR(100),
role VARCHAR(9),
gender VARCHAR(6),
birthday VARCHAR(10),
classroom INT(11) )
BEGIN
IF EXISTS (SELECT * FROM student WHERE userID = ID) THEN
START TRANSACTION;
UPDATE tbl_users
SET userName = name, userEmail = email, userRole = role,
gender = gender, birthday = birthday
WHERE userID = ID;
UPDATE student
SET classID = classroom
WHERE userID = ID;
COMMIT;
ELSE
START TRANSACTION;
UPDATE tbl_users
SET userName = name, userEmail = email, userRole = role,
gender = gender, birthday = birthday
WHERE userID = ID;
INSERT INTO student(classID, userID)
VALUES (classroom, ID);
COMMIT;
END IF;
END;