In allen Schemas installieren
Um eine Liste der Schemas zu erhalten, verwenden Sie show databases;
. Kombinieren Sie dies mit -- use
:
use schemaA;
-- use schemaB;
-- use schemaC;
create procedure ...
Durchlaufen Sie die Schemas manuell, indem Sie use
entfernen und auskommentieren Klauseln, während Sie weitermachen und überprüfen, ob alles funktioniert. In MySQL Workbench ist Strg+Shift+Enter Ihr Freund.
Installieren von Routinen in einer Teilmenge von Schemas
Normalerweise möchten Sie die gespeicherte Routine nicht in allen installieren Schemas auf einem Server, aber nur in einer Teilmenge --- oft definiert durch den Satz von Schemas, die bereits eine bestimmte gespeicherte Routine installiert haben. Dann wie besprochen SO , können Sie eine Abfrage wie diese verwenden, um die Namen der relevanten Schemas zu erhalten:
SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine';
Verifizierung
Nach dem Bereitstellen von Routinen können Sie eine Abfrage wie diese verwenden, um ihre Existenz zu überprüfen:
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';
Diese Abfrage prüft, ob RoutineName1
, RoutineName2
und RoutineName3
in den Datenbankschemata auf Ihrem Server existieren, die die Routine FilteringRoutineName
haben . Fehlt eine Routine, wird sie mit ####
gekennzeichnet .
Dies prüft natürlich nur die routinemäßige Existenz. Um ihre Implementierung zu überprüfen, benötigen Sie möglicherweise ein Datenbank-Diff-Tool (wie MySQL Compare oder ähnliches).