Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建名称中包含用户变量的mysql视图_Mysql_Variables_View_Grant - Fatal编程技术网

如何创建名称中包含用户变量的mysql视图

如何创建名称中包含用户变量的mysql视图,mysql,variables,view,grant,Mysql,Variables,View,Grant,我正在使用mysql 5.5,试图编写一个脚本来创建用户、视图,并授予这些视图的select权限。这是我到目前为止所拥有的 set @type_id := 1; set @username := 'somecompany'; set @password := 'company1234'; set @prefix := 'somecompany'; CREATE OR REPLACE VIEW CONCAT(@prefix, '_report') AS SELECT * FROM my_tabl

我正在使用mysql 5.5,试图编写一个脚本来创建用户、视图,并授予这些视图的select权限。这是我到目前为止所拥有的

set @type_id := 1;
set @username := 'somecompany';
set @password := 'company1234';
set @prefix := 'somecompany';

CREATE OR REPLACE VIEW CONCAT(@prefix, '_report') AS
SELECT * FROM my_table
WHERE type_id = @type_id;
这将不起作用,因为它没有为视图名称查找字符串。我通过以下语句来创建用户:

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', @username, PASSWORD(@password));
是否有类似的技巧可用于创建视图,并将这些视图上的选择权授予我创建的用户?

您可用于执行此查询。只需将查询构造为字符串并使用准备好的语句运行即可


编辑

MySQL 5.5.12-log

SET @s = 'CREATE  VIEW view_actor AS SELECT * FROM sakila.actor;';
PREPARE stmt2 FROM @s;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;


-- Check CREATE VIEW
SHOW CREATE VIEW view_actor;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_actor` AS select `sakila`.`actor`.`actor_id` AS `actor_id`,`sakila`.`actor`.`first_name` AS `first_name`,`sakila`.`actor`.`last_name` AS `last_name`,`sakila`.`actor`.`last_update` AS `last_update` from `sakila`.`actor`
您可以使用来执行此查询。只需将查询构造为字符串并使用准备好的语句运行即可


编辑

MySQL 5.5.12-log

SET @s = 'CREATE  VIEW view_actor AS SELECT * FROM sakila.actor;';
PREPARE stmt2 FROM @s;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;


-- Check CREATE VIEW
SHOW CREATE VIEW view_actor;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_actor` AS select `sakila`.`actor`.`actor_id` AS `actor_id`,`sakila`.`actor`.`first_name` AS `first_name`,`sakila`.`actor`.`last_name` AS `last_name`,`sakila`.`actor`.`last_update` AS `last_update` from `sakila`.`actor`

在5.5用户手册中,它有一个查询列表,准备好的语句可以用于。在我能找到的任何东西中,Create view都不能与预先准备好的语句一起使用,而且它在workbench中对我不起作用-(您只能使用INSERT INTO添加新用户或使用CREATE user语句。另一种方法是在应用程序中执行。停止!!!我发现了一件非常有趣的事情。CREATE视图可以与准备好的语句一起使用。我已经在MySQL 5.5上实现了这一点,一切正常。您是想用您发布的示例编辑我的帖子吗?我想给出一个例子。)您的回答值得称赞,但对于将来试图找到此答案的人来说,这将更加令人困惑。在我接受之前,您可以将示例代码移到您的答案中吗?哦,对不起,我意外地将其添加到您的问题中;-)在5.5用户手册中,它有一个查询列表,准备好的语句可用于。在我能找到的任何东西中,Create view都不能与预先准备好的语句一起使用,而且它在workbench中对我不起作用-(您只能使用INSERT INTO添加新用户或使用CREATE user语句。另一种方法是在应用程序中执行。停止!!!我发现了一件非常有趣的事情。CREATE视图可以与准备好的语句一起使用。我已经在MySQL 5.5上实现了这一点,一切正常。您是想用您发布的示例编辑我的帖子吗?我想给出一个例子。)您的回答值得称赞,但对于将来试图找到此答案的人来说,这将更加令人困惑。请在我接受之前将示例代码移到您的答案中,好吗?哦,对不起,我不小心将其添加到了您的问题中;-)