2009-10-21 14 views
5

Im đánh giá liquibase cho một dự án bắt đầu từ hôm nay.Vài câu hỏi từ một liquibase noob

Có ai đã sử dụng nó để tạo các thủ tục, chức năng, về cơ bản tất cả các công cụ plsql không?

Nếu không, bạn có thể viết mã sql được nhúng vào tệp xml không?

Xin cảm ơn trước.

Trả lời

5

Có thẻ gắn trong createProcedure trong liquibase để quản lý quy trình. Cách tiếp cận tốt nhất thường là kết hợp các thẻ hoặc với runOnChange để liquibase sẽ cập nhật thủ tục của bạn khi nào và chỉ khi bạn cập nhật định nghĩa. Bằng cách đó bạn có thể làm khác biệt giữa các tệp xml thay đổi của bạn theo thời gian và xem quy trình đã thay đổi như thế nào.

Sử dụng thẻ sqlFile để tham chiếu tệp cho mỗi tệp lưu trữ-proc cũng phổ biến, hoặc, như bạn đã nói, bạn có thể sử dụng thẻ sql để tùy chỉnh sql nội tuyến.

+0

WOW !!! Rất vui khi biết bạn đang ở đây :) – Tom

+0

Tôi ở khắp mọi nơi :) LMK nếu bạn gặp phải bất kỳ câu hỏi hoặc vấn đề nào khác, hoặc cần làm rõ thêm –

1

Trong khi tôi đã không sử dụng liquibase cho các thủ tục lưu trữ, tôi có một số kinh nghiệm của Liquibase cho các hoạt động chung chung hơn.

Có thể viết sql tùy chỉnh, được nhúng trong tệp xml hoặc được tham chiếu từ tệp bên ngoài.

2

Tôi đã gặp sự cố khi thử sử dụng thẻ sql cho các thủ tục, trình kích hoạt và chức năng được lưu trữ, nhưng trong trường hợp của tôi, đây là vấn đề với trình điều khiển JDBC của MySQL chứ không phải bản thân Liquibase. Thực tế tôi đã giải quyết là sử dụng tái cấu trúc sqlFile như Nathan đề xuất, sau đó kiểm soát mã SP/trigger/function trong cùng một dự án như là thay đổi, được phiên bản trong hệ thống mã nguồn cùng với nó. Điều này cho phép bạn quản lý SP/bất kỳ mã nào giống như mã nguồn thực.

Cài đặt runOnChange = "true" trong tập hợp thay đổi chứa việc tái cấu trúc sqlFile là điều cần thiết. Đây là công tắc này (cảm ơn bạn, Nathan) cho phép kiểm soát nguồn thực sự của mã cơ sở dữ liệu thủ tục.

+0

Hey Tim, vì vậy nếu tôi có được ý chính của nó, nó sẽ là hợp lý để có một {schemaName}/sprocs/populated với các tệp sproc_name.xml và sau đó có Liquibase phát hiện và cập nhật lược đồ khi các tệp này được cập nhật? – David

+0

Điều đó sẽ hiệu quả, nhưng tôi nghĩ nó sẽ hơi cồng kềnh. Những gì tôi đã làm là có một thay đổi "lưu trữ-proc.xml" (hoặc cái gì đó), trong đó có runOnChange = "true" changeSets trong nó, mỗi chạy một idempotent duy nhất, SP-tạo SQL script nằm ở db/src /procs/*.sql (hoặc ở đâu đó). Miễn là bạn cập nhật thay đổi đó mỗi lần mã SP có thể thay đổi, bạn sẽ luôn có các SP cập nhật trong cơ sở dữ liệu và trong điều khiển nguồn. Khi bạn thêm một SP mới, thêm một thay đổi mớiThiết lập cho thay đổi đó. Hoạt động tuyệt vời! – tlberglund