Oceniam Liquibase i próbuję dowiedzieć się, czy ma jakieś zalety migracji danych za pomocą tylko skryptów SQL. Załóżmy, że mam następujący sposób:Jakieś korzyści z używania Liquibase do migracji baz danych?
Moja wersja 0 schematu bazy danych wygląda następująco:
CREATE TABLE `Person` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`firstName` varchar(255) NOT NULL,
`lastName` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
Baza jest wypełniana niektórych istniejących danych reprezentowanych przez następujące wkładki:
INSERT INTO `Person` (`id`, `firstName`, `lastName`) VALUES (1, 'foo', 'bar');
I następnie zdecyduj się dodać kolejną kolumnę do tabeli Person, która nie jest pusta, ale nie chcę stracić żadnych istniejących danych. Skrypt migracji z wersji 0 do wersji 1 będzie wyglądał następująco:
ALTER TABLE `Person` ADD COLUMN `dob` date DEFAULT NULL;
UPDATE `Person` set `dob` = '1970-01-01';
ALTER TABLE `Person` MODIFY COLUMN `dob` NOT NULL;
Czy Liquibase może ułatwić to użycie?
Dziękuję za link do pytania/odpowiedzi, która pomaga. –
Oczywiście można dodać kolumnę niezerową z domyślną wartością "SQL". Którego DBMS, do którego się odnosisz, nie obsługuje tego? –
@a_horse_with_no_name - Przepraszamy, aby było jasne Mam na myśli: Nie ma pojedynczego polecenia SQL, które może utworzyć kolumnę o wartości niezerowej, która określa wartość dla istniejących wierszy, ale która nie ustawia domyślnej wartości kolumny. Cieszę się, że się nie mylę, ale wydaje mi się, że wszystkie kombinacje poleceń do osiągnięcia tego mają co najmniej 3 linie. – David