gpt4 book ai didi

mysql - 意外的 end_of_input,期望 ';' mysql

转载 作者:行者123 更新时间:2023-11-29 13:18:20 24 4
gpt4 key购买 nike

我不知道如何解决它:

drop trigger if exists insertusuario;
CREATE TRIGGER insertusuario
BEFORE INSERT ON usuario
FOR EACH ROW
begin
GRANT ALL ON *.* TO ',new.nombre,'@'%' IDENTIFIED BY ',new.contraseña,' WITH GRANT OPTION;
end;

最佳答案

更改您的 Grant 命令语句准备,如下所示:

   SELECT
CONCAT( 'GRANT ALL ON *.* TO ''',
new.nombre,
'''@''%'' IDENTIFIED BY ''',
new.contraseña,
''' WITH GRANT OPTION'
) INTO @temp_grant_sql_string;

使用准备好的语句来执行这个生成的grant语句;

PREPARE stmt FROM @temp_grant_sql_string;
EXECUTE stmt;
deallocate prepare stmt; -- or drop prepare stmt;

希望您在注册存储过程之前了解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 ;

关于mysql - 意外的 end_of_input,期望 ';' mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21185623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com