更改Grant
命令語句編寫象下面這樣:
SELECT
CONCAT('GRANT ALL ON *.* TO ''',
new.nombre,
'''@''%'' IDENTIFIED BY ''',
new.contraseña,
''' WITH GRANT OPTION'
) INTO @temp_grant_sql_string;
使用準備好的語句來執行這個生成的授權聲明;
PREPARE stmt FROM @temp_grant_sql_string;
EXECUTE stmt;
deallocate prepare stmt; -- or drop prepare stmt;
讓我希望您在註冊存儲過程之前知道delimiter
部分。
使用:delimiter $$
觸發器定義之前。並且,
使用:delimiter ;
觸發器定義後,重置爲默認值。
最後,你的觸發器應該去閱讀這樣的:
delimiter $$;
drop trigger if exists insertusuario
$$
CREATE TRIGGER insertusuario BEFORE INSERT ON usuario
FOR EACH ROW BEGIN
SELECT
CONCAT('GRANT ALL ON *.* TO ''',
new.nombre,
'''@''%'' IDENTIFIED BY ''',
new.contraseña,
''' WITH GRANT OPTION'
) INTO @temp_grant_sql_string;
PREPARE stmt FROM @temp_grant_sql_string;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; -- or DROP PREPARE stmt;
END;
$$
delimiter ;
它看起來像你的混合應用程序代碼(變量,如'new.nombre')和MySQL的代碼,如果是這樣,你做圍繞'%'字符的錯誤。 –