Installazione in tutti gli schemi
Per ottenere un elenco degli schemi, usa show databases;
. Combina questo con -- use
:
use schemaA;
-- use schemaB;
-- use schemaC;
create procedure ...
Scorri manualmente gli schemi, rimuovendo e decommentando use
clausole mentre vai avanti, controllando che tutto funzioni. In MySQL Workbench, Ctrl+Maiusc+Invio è tuo amico.
Installazione di routine in un sottoinsieme di schemi
Normalmente non vuoi installare la routine memorizzata in tutti schemi su un server, ma solo in un sottoinsieme --- spesso definito dall'insieme di schemi che hanno già installato una specifica routine memorizzata. Quindi, come discusso su COSÌ , puoi utilizzare una query come questa per ottenere i nomi degli schemi rilevanti:
SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine';
Verifica
Dopo aver distribuito le routine, per verificarne l'esistenza, puoi utilizzare una query come questa:
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';
Questa query verificherà se RoutineName1
, RoutineName2
e RoutineName3
esistono negli schemi del database sul tuo server che hanno la routine FilteringRoutineName
. Se manca una routine, sarà contrassegnata con ####
.
Naturalmente, questo controlla solo l'esistenza di routine. Per verificarne l'implementazione, potresti aver bisogno di uno strumento di database diff (come MySQL Compare o simili).