Ich evaluiere Liquibase und versuche herauszufinden, ob es für Datenmigrationen Vorteile gegenüber SQL-Skripten bietet. Angenommen, ich mache folgendes:Welche Vorteile bietet Liquibase für Datenbankmigrationen?
Meine Version 0 Datenbank-Schema wie folgt aussieht:
CREATE TABLE `Person` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`firstName` varchar(255) NOT NULL,
`lastName` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
Die Datenbank ist bevölkert mit einigen vorhandenen Daten durch die folgende, einfügen:
INSERT INTO `Person` (`id`, `firstName`, `lastName`) VALUES (1, 'foo', 'bar');
I Entscheiden Sie dann, der Person-Tabelle, die nicht null ist, eine weitere Spalte hinzuzufügen, aber ich möchte keine vorhandenen Daten verlieren. Das Migrationsskript von Version 0 zu Version 1 würde wie folgt aussehen:
ALTER TABLE `Person` ADD COLUMN `dob` date DEFAULT NULL;
UPDATE `Person` set `dob` = '1970-01-01';
ALTER TABLE `Person` MODIFY COLUMN `dob` NOT NULL;
Könnte Liquibase diesen Anwendungsfall vereinfachen?
Vielen Dank für Ihre Frage/Antwort-Verknüpfung, das hilft. –
Natürlich können Sie eine nicht Null Spalte mit einem Standard in "SQL" hinzufügen. Auf welches DBMS bezieht sich das nicht? –
@a_horse_with_no_name - Sorry, um klar zu sein, meine ich: Es gibt keinen einzigen SQL-Befehl, der eine Nicht-Null-Spalte erstellen kann, die einen Wert für vorhandene Zeilen angibt, aber den Standardspaltenwert nicht festlegt. Ich bin froh darüber, dass ich mich als falsch erwiesen habe, aber ich denke, dass alle Kombinationen von Befehlen, um dies zu erreichen, mindestens 3 Zeilen lang sind. – David