Revision 1e2a4a38
Von Moritz Bunkus vor etwa 18 Jahren hinzugefügt
sql/Pg-upgrade2/globalprojectnumber_ap_ar_oe.pl | ||
---|---|---|
# @tag: globalprojectnumber_ap_ar_oe
|
||
# @description: Neue Spalte für eine globale Projektnummer in Einkaufs- und Verkaufsbelegen
|
||
# @depends: release_2_4_1
|
||
|
||
die("This script cannot be run from the command line.") unless ($main::form);
|
||
|
||
sub do_query {
|
||
my ($query, $may_fail) = @_;
|
||
|
||
if (!$dbh->do($query)) {
|
||
mydberror($query) unless ($may_fail);
|
||
$dbh->rollback();
|
||
$dbh->begin_work();
|
||
}
|
||
}
|
||
|
||
sub do_update {
|
||
my @queries =
|
||
("ALTER TABLE ap ADD COLUMN globalproject_id integer;",
|
||
"ALTER TABLE ap ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
|
||
"ALTER TABLE ar ADD COLUMN globalproject_id integer;",
|
||
"ALTER TABLE ar ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
|
||
"ALTER TABLE oe ADD COLUMN globalproject_id integer;",
|
||
"ALTER TABLE oe ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);");
|
||
|
||
do_query("ALTER TABLE project ADD PRIMARY KEY (id);", 1);
|
||
map({ do_query($_, 0); } @queries);
|
||
|
||
return 1;
|
||
}
|
||
|
||
return do_update();
|
||
|
sql/Pg-upgrade2/globalprojectnumber_ap_ar_oe.sql | ||
---|---|---|
-- @tag: globalprojectnumber_ap_ar_oe
|
||
-- @description: Neue Spalte für eine globale Projektnummer in Einkaufs- und Verkaufsbelegen
|
||
-- @depends: release_2_4_1
|
||
ALTER TABLE ap ADD COLUMN globalproject_id integer;
|
||
ALTER TABLE ap ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);
|
||
ALTER TABLE ar ADD COLUMN globalproject_id integer;
|
||
ALTER TABLE ar ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);
|
||
ALTER TABLE oe ADD COLUMN globalproject_id integer;
|
||
ALTER TABLE oe ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);
|
Auch abrufbar als: Unified diff
Anscheinend gab es irgendwo im Upgrade-Pfad Unstimmigkeiten, sodass nicht alle Datenbanken bei project einen Primärschlüssel auf id haben, auch wenn dieser in lx-office.sql eingetragen ist. Also project mit einem Primärschlüssel versehen, sofern keiner existiert, bevor mit Fremdschlüsseln darauf verwiesen wird.