sql >> Databáze >  >> RDS >> Mysql

Nainstalujte uloženou proceduru na více databází

Instalace do všech schémat

Chcete-li získat seznam schémat, použijte show databases; . Zkombinujte to s -- use :

use schemaA;
-- use schemaB;
-- use schemaC;

create procedure ...

Ručně iterujte schémata, odstraňte a odkomentujte use klauzule, jak postupujete dál a kontrolujete, zda vše funguje. V MySQL Workbench je váš přítel Ctrl+Shift+Enter.

Instalace rutin do podmnožiny schémat

Normálně nechcete instalovat uloženou rutinu do všech schémata na serveru, ale pouze v podmnožině --- často definováno sadou schémat, která již mají nainstalovanou nějakou konkrétní uloženou rutinu. Poté jak je uvedeno na TAK , můžete použít dotaz jako tento k získání názvů příslušných schémat:

SELECT ROUTINE_SCHEMA FROM `information_schema`.`ROUTINES` where specific_name = 'MyRoutine'; 

Ověření

Po nasazení rutin můžete k ověření jejich existence použít dotaz jako tento:

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'; 

Tento dotaz zkontroluje, zda RoutineName1 , RoutineName2 a RoutineName3 existují v databázových schématech na vašem serveru, která mají rutinu FilteringRoutineName . Pokud rutina chybí, bude označena #### .

To samozřejmě kontroluje pouze rutinní existenci. K ověření jejich implementace možná budete potřebovat nástroj pro porovnání databáze (jako je MySQL Compare nebo podobný).



  1. Získejte název sloupce, který má maximální hodnotu v řádku sql

  2. Jaký je rozdíl mezi odstraněním z tabulky table_a a zkrácením tabulky table_a v MySQL?

  3. Instalace ovladačů JDBC pro Microsoft SQL Server v nástrojích Pentaho Data Integration a BA Server

  4. Změnilo se chování Android SQLite Journal?