Инсталиране във всички схеми
За да получите списък със схемите, използвайте show databases;
. Комбинирайте това с -- use
:
use schemaA;
-- use schemaB;
-- use schemaC;
create procedure ...
Ръчно повторение през схемите, премахване и декомментиране на use
клаузи, докато продължавате, като проверявате дали всичко работи. В MySQL Workbench Ctrl+Shift+Enter е ваш приятел.
Инсталиране на рутинни програми в подмножество от схеми
Обикновено не искате да инсталирате съхранената рутина във всички схеми на сървър, но само в подмножество --- често се дефинира от набор от схеми, които вече имат инсталирана специфична съхранена рутина. След това както е обсъдено на ТАКА , можете да използвате заявка като тази, за да получите имената на съответните схеми:
SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine';
Потвърждаване
След внедряване на рутинни процедури, за да проверите съществуването им, можете да използвате заявка като тази:
SELECT distinct
r1.ROUTINE_SCHEMA,
case when r2.specific_name is not null then '' else '####' end as RoutineName1,
case when r3.specific_name is not null then '' else '####' end as RoutineName2,
case when r4.specific_name is not null then '' else '####' end as RoutineName3
FROM
`information_schema`.`ROUTINES` as r1
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName1') as r2 on r1.routine_schema = r2.routine_schema
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName2') as r3 on r1.routine_schema = r3.routine_schema
LEFT JOIN (select * from `information_schema`.`ROUTINES` where specific_name = 'RoutineName3') as r4 on r1.routine_schema = r4.routine_schema
where
r1.specific_name = 'FilteringRoutineName';
Тази заявка ще провери дали RoutineName1
, RoutineName2
и RoutineName3
съществуват в схемите на базата данни на вашия сървър, които имат рутината FilteringRoutineName
. Ако процедура липсва, тя ще бъде маркирана с ####
.
Разбира се, това само проверява за рутинно съществуване. За да проверите тяхното прилагане, може да ви е необходим инструмент за разлика в базата данни (като MySQL Compare или подобен).