Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cài đặt quy trình được lưu trữ trên nhiều cơ sở dữ liệu

Cài đặt trong tất cả các lược đồ

Để nhận danh sách các lược đồ, hãy sử dụng show databases; . Kết hợp điều này với -- use :

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

create procedure ...

Lặp lại theo cách thủ công qua các lược đồ, xóa và bỏ ghi chú use khi bạn tiếp tục, kiểm tra xem mọi thứ có diễn ra không. Trong MySQL Workbench, Ctrl + Shift + Enter là bạn của bạn.

Cài đặt quy trình trong một tập hợp con các lược đồ

Thông thường, bạn không muốn cài đặt quy trình được lưu trữ trong tất cả lược đồ trên một máy chủ, nhưng chỉ trong một tập hợp con --- thường được xác định bởi tập hợp các lược đồ đã được cài đặt một số quy trình được lưu trữ cụ thể. Sau đó, như đã thảo luận trên VẬY , bạn có thể sử dụng một truy vấn như thế này để lấy tên của các lược đồ có liên quan:

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

Xác minh

Sau khi triển khai các quy trình, để xác minh sự tồn tại của chúng, bạn có thể sử dụng truy vấn như sau:

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

Truy vấn này sẽ kiểm tra xem RoutineName1 , RoutineName2RoutineName3 tồn tại trong các lược đồ cơ sở dữ liệu trên máy chủ của bạn có quy trình FilteringRoutineName . Nếu thiếu một quy trình, quy trình đó sẽ được đánh dấu bằng #### .

Tất nhiên, điều này chỉ kiểm tra sự tồn tại thường xuyên. Để xác minh việc triển khai chúng, bạn có thể cần một công cụ khác biệt cơ sở dữ liệu (chẳng hạn như MySQL Compare hoặc tương tự).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một bảng SQL nội tuyến ngay lập tức (đối với một phép nối không bao gồm bên trái)

  2. java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid (I) Z

  3. Xóa hàng Mysql sau thời gian được chỉ định

  4. Cách lấy giá trị từ cột MySQL (5.6) nếu chứa tài liệu json dưới dạng chuỗi

  5. MySQL Workbench Error 1175 ngay cả với câu lệnh Where