Как мне создать представление MySQL с пользовательской переменной в имени - PullRequest
1 голос
/ 16 декабря 2011

Я использую 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));

Есть ли подобный прием, который я могу использовать для создания представлений и предоставления выбора для этих представлений пользователю, которого я создал?

1 Ответ

0 голосов
/ 16 декабря 2011

Вы можете использовать Подготовленные заявления для выполнения этих запросов.Просто создайте запрос как строку и запустите его с подготовленными операторами.


Редактировать

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`
...