Sau khi thực hiện một số nghiên cứu, tôi nghĩ rằng tôi có thể đã tìm ra cách để giải quyết vấn đề này. Tôi đã tìm kiếm một cách để xác minh xem một kịch bản đã được thực hiện đối với một cơ sở dữ liệu đích. Điều này sẽ chủ yếu để kiểm soát phiên bản cơ sở dữ liệu của tôi. Tôi có một bảng được tạo ra để theo dõi các kịch bản đã được thực hiện và muốn một số dòng chảy bên trong các kịch bản lệnh của tôi để kiểm tra bảng đó trước khi thực thi. Trong khi tôi chưa hoàn toàn giải quyết được vấn đề nhưng tôi đã tạo ra một kịch bản đơn giản về cơ bản thực hiện những gì tôi cần, tôi chỉ cần bọc DDL vào các lựa chọn dựa trên giá trị của các biến.
bước 1 - Thiết lập một biến chút để giữ được kết quả bước 2 - làm lựa chọn của bạn và thiết lập các biến nếu kết quả được tìm thấy bước 3 - Hãy làm những gì bạn cần làm vào kết quả sai bước 4 - Hãy làm những gì bạn cần phải làm trên kết quả đúng
Dưới đây là ví dụ kịch bản
bộ @schemachangeid = 0;
chọn @schemachangeid: = 1 từ SchemaChangeLog nơi scriptname = '1_create_tables.sql';
chọn 'scriptalreadyran' từ kép nơi @schemachangeid = 1;
chọn 'scriptnotran' từ kép nơi @schemachangeid = 0;
Tôi cũng nhận ra đây là một chủ đề cũ nhưng có lẽ điều này sẽ giúp một người nào đó đang cố gắng làm điều này ngoài một thủ tục lưu trữ như tôi.
Từ liên kết được cung cấp: "Chúng chỉ được phép trong các chức năng và quy trình được lưu trữ". – user470714
Bạn có thể đặt tập lệnh của mình vào một quy trình được lưu trữ và sau đó chỉ cần gọi thủ tục. – Owen
Làm thế nào về công đoàn? – ajreal