Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zainstaluj procedurę składowaną w wielu bazach danych

Instalowanie we wszystkich schematach

Aby uzyskać listę schematów, użyj show databases; . Połącz to z -- use :

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

create procedure ...

Ręcznie przechodź przez schematy, usuwając i odkomentowując use klauzule, gdy idziesz dalej, sprawdzając, czy wszystko działa. W środowisku MySQL Workbench Ctrl+Shift+Enter jest Twoim przyjacielem.

Instalowanie procedur w podzbiorze schematów

Zwykle nie chcesz instalować zapisanej procedury w wszystkich schematy na serwerze, ale tylko w podzbiorze --- często definiowane przez zestaw schematów, które mają już zainstalowaną określoną procedurę przechowywaną. Następnie jak omówiono w TAK , możesz użyć takiego zapytania, aby uzyskać nazwy odpowiednich schematów:

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

Weryfikacja

Po wdrożeniu procedur, aby zweryfikować ich istnienie, możesz użyć zapytania takiego:

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

To zapytanie sprawdzi, czy RoutineName1 , RoutineName2 i RoutineName3 istnieją w schematach baz danych na twoim serwerze, które mają procedurę FilteringRoutineName . Jeśli brakuje procedury, zostanie ona oznaczona #### .

Oczywiście sprawdza się to tylko pod kątem rutynowego istnienia. Aby zweryfikować ich implementację, możesz potrzebować narzędzia do porównywania baz danych (takiego jak MySQL Compare lub podobne).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dopasować rekordy, które są powiązane z określonym zestawem innych rekordów?

  2. Jak ustalić, czy używasz SSL w połączeniu MySql?

  3. LOAD DATA LOCAL INFILE nie działa z php 5.5 przy użyciu PDO

  4. Wiele instrukcji wstawiania w pojedynczym ODBC ExecuteNonQuery (C#)

  5. Uruchom MySQL Server jako usługę (Win 8)