2011-12-15 53 views
1

的用户变量创建mysql视图我正在使用mysql 5.5,试图编写脚本来创建用户,视图并为这些视图授予选择特权。这是迄今为止我所拥有的。如何使用名称为

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)); 

是否有类似的技巧,我可以用它来创建的意见,并就这些意见我创建的用户授予选择?

回答

0

您可以使用Prepared Statements来执行此查询。只需将查询构造为一个字符串并使用预处理语句来运行它。


编辑

的MySQL 5.5.12日志

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` 
+0

http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared- statements.html 在5.5用户手册中,它具有可用于准备语句的查询列表。创建视图不能与任何我能找到的准备好的语句一起使用,并且它在工作台中不适用于我。 – 2011-12-16 15:54:22