При создании нового представления в базе данных через MySQL Workbench код автоматически улучшается и оптимизируется в соответствии с некоторыми неявными правилами Workbench.
Таким образом, имеется простая таблица (код заимствован из http://www.artfulsoftware.com/infotree/qrytip.php?id=78):
CREATE TABLE tbl( id INT, colID INT, value CHAR(20) );
INSERT INTO tbl VALUES
(1,1,'Sampo'),(1,2,'Kallinen'),(1,3,'Office Manager'),
(2,1,'Jakko'),(2,2,'Salovaara'),(2,3,'Vice President');
Следующий запрос для создания представления:
CREATE VIEW `test_view` AS
SELECT
id,
GROUP_CONCAT(if(colID = 1, value, NULL)) AS 'First Name',
GROUP_CONCAT(if(colID = 2, value, NULL)) AS 'Last Name',
GROUP_CONCAT(if(colID = 3, value, NULL)) AS 'Job Title'
FROM tbl
GROUP BY id;
Затем преобразуется в это MySQL Workbench:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `test_view` AS
SELECT
`tbl`.`id` AS `id`,
GROUP_CONCAT(IF((`tbl`.`colID` = 1),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `First Name`,
GROUP_CONCAT(IF((`tbl`.`colID` = 2),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `Last Name`,
GROUP_CONCAT(IF((`tbl`.`colID` = 3),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `Job Title`
FROM
`tbl`
GROUP BY `tbl`.`id`
Есть ли способ сообщить Workbench:сохранить вид в исходном виде, с помощью которого он был создан?
Моя самая большая проблема заключается в добавлении имени таблицы к имени каждого столбца (например, tbl
. id
) в качестве Iчасто приходится повторно использовать код CREATE VIEW для разных таблиц с одинаковыми именами столбцов. Тем не менее, я нахожу исходную форму более простой и удобной для чтения.