Tôi đang đánh giá Liquibase và cố gắng tìm hiểu xem nó có bất kỳ lợi thế nào cho việc di chuyển dữ liệu qua chỉ sử dụng các tập lệnh SQL hay không. Giả sử tôi đang làm như sau:Bất kỳ ưu điểm nào khi sử dụng Liquibase để di chuyển cơ sở dữ liệu?
phiên bản cơ sở dữ liệu 0 schema của tôi trông như thế này:
CREATE TABLE `Person` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`firstName` varchar(255) NOT NULL,
`lastName` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
Cơ sở dữ liệu được phổ biến với một số dữ liệu hiện có đại diện bởi các chèn sau:
INSERT INTO `Person` (`id`, `firstName`, `lastName`) VALUES (1, 'foo', 'bar');
tôi sau đó quyết định thêm cột khác vào bảng Person không phải là null nhưng tôi không muốn mất bất kỳ dữ liệu hiện có nào. Tập lệnh di chuyển từ phiên bản 0 sang phiên bản 1 sẽ trông giống như sau:
ALTER TABLE `Person` ADD COLUMN `dob` date DEFAULT NULL;
UPDATE `Person` set `dob` = '1970-01-01';
ALTER TABLE `Person` MODIFY COLUMN `dob` NOT NULL;
Liquibase có thể làm cho trường hợp sử dụng này dễ dàng hơn không?
Cảm ơn bạn đã liên kết đến câu hỏi/câu trả lời của mình, điều đó giúp ích. –
Tất nhiên bạn có thể thêm một cột không rỗng với một mặc định trong "SQL". DBMS nào bạn đang đề cập đến không hỗ trợ điều này? –
@a_horse_with_no_name - Xin lỗi, phải rõ ràng Ý tôi là: Không có lệnh SQL nào có thể tạo một cột không có giá trị chỉ định giá trị cho các hàng hiện có nhưng không đặt giá trị cột mặc định. Tôi rất vui khi được chứng minh là sai nhưng tôi nghĩ rằng tất cả các kết hợp của lệnh để đạt được điều này có ít nhất 3 dòng. – David