Installation i alle skemaer
For at få en liste over skemaerne, brug show databases;
. Kombiner dette med -- use
:
use schemaA;
-- use schemaB;
-- use schemaC;
create procedure ...
Gentag manuelt gennem skemaerne, fjern og fjern kommentar use
klausuler, mens du går videre, og kontrollerer, at alt fungerer. I MySQL Workbench er Ctrl+Shift+Enter din ven.
Installation af rutiner i et undersæt af skemaer
Normalt ønsker du ikke at installere den lagrede rutine i alle skemaer på en server, men kun i et undersæt --- ofte defineret af det sæt af skemaer, som allerede har en bestemt lagret rutine installeret. Derefter, som diskuteret på SÅ , kan du bruge en forespørgsel som denne for at få navnene på de relevante skemaer:
SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine';
Bekræftelse
Efter implementering af rutiner, for at bekræfte eksistensen af dem, kan du bruge en forespørgsel som denne:
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';
Denne forespørgsel vil kontrollere, om RoutineName1
, RoutineName2
og RoutineName3
findes i databaseskemaerne på din server, som har rutinen FilteringRoutineName
. Hvis en rutine mangler, vil den blive markeret med ####
.
Dette kontrollerer naturligvis kun for rutinemæssig eksistens. For at verificere deres implementering skal du muligvis bruge et databasediff-værktøj (såsom MySQL Compare eller lignende).