Mysql
 sql >> база данни >  >> RDS >> Mysql

Инсталирайте съхранена процедура в множество бази данни

Инсталиране във всички схеми

За да получите списък със схемите, използвайте show databases; . Комбинирайте това с -- use :

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

create procedure ...

Ръчно повторение през схемите, премахване и декомментиране на use клаузи, докато продължавате, като проверявате дали всичко работи. В MySQL Workbench Ctrl+Shift+Enter е ваш приятел.

Инсталиране на рутинни програми в подмножество от схеми

Обикновено не искате да инсталирате съхранената рутина във всички схеми на сървър, но само в подмножество --- често се дефинира от набор от схеми, които вече имат инсталирана специфична съхранена рутина. След това както е обсъдено на ТАКА , можете да използвате заявка като тази, за да получите имената на съответните схеми:

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

Потвърждаване

След внедряване на рутинни процедури, за да проверите съществуването им, можете да използвате заявка като тази:

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

Тази заявка ще провери дали RoutineName1 , RoutineName2 и RoutineName3 съществуват в схемите на базата данни на вашия сървър, които имат рутината FilteringRoutineName . Ако процедура липсва, тя ще бъде маркирана с #### .

Разбира се, това само проверява за рутинно съществуване. За да проверите тяхното прилагане, може да ви е необходим инструмент за разлика в базата данни (като MySQL Compare или подобен).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_query връща само тип низ за тип int/fload db

  2. Показване на MySQL хост чрез SQL команда

  3. Кое е по-бързо - INSTR или LIKE?

  4. Изберете последния ред в MySQL

  5. Получаване на грешка в MYSQL:Код на грешка:2006 - MySQL сървърът е изчезнал