Revision 5450d982
Von Niclas Zimmermann vor mehr als 10 Jahren hinzugefügt
sql/Pg-upgrade2/change_taxzone_id_0.pl | ||
---|---|---|
1 | 1 |
# @tag: change_taxzone_id_0 |
2 |
# @description: Verändert die id von 0 auf einen anderen Wert größer 0 in tax_zones, wenn es so einen Eintrag gibt. |
|
2 |
# @description: Verändert die id von 0 auf einen anderen Wert größer 0 in tax_zones, wenn es so einen Eintrag gibt und setzt zwei Fremdschlüssel von Tabellen ar/ap auf tax_zones.
|
|
3 | 3 |
# @depends: convert_taxzone taxzone_default_id taxzone_sortkey |
4 | 4 |
package SL::DBUpgrade2::change_taxzone_id_0; |
5 | 5 |
|
... | ... | |
11 | 11 |
sub run { |
12 | 12 |
my ($self) = @_; |
13 | 13 |
|
14 |
my $query = qq|SELECT id FROM tax_zones ORDER BY id DESC|; |
|
14 |
my $query = qq|SELECT id FROM tax_zones ORDER BY id DESC LIMIT 1|;
|
|
15 | 15 |
my ($id) = $self->dbh->selectrow_array($query); |
16 | 16 |
$id++; |
17 | 17 |
|
... | ... | |
19 | 19 |
my $sth = $self->dbh->prepare($query); |
20 | 20 |
$sth->execute || $::form->dberror($query); |
21 | 21 |
|
22 |
my $ref = $sth->fetchrow_hashref("NAME_lc");
|
|
22 |
if (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
|
|
23 | 23 |
|
24 |
$query = qq|INSERT INTO tax_zones (id, description, sortkey) VALUES (?,?,?)|; |
|
25 |
$self->db_query($query, bind => [ $id, $ref->{description}, $ref->{sortkey} ]); |
|
24 |
$query = qq|INSERT INTO tax_zones (id, description, sortkey) VALUES (?,?,?)|;
|
|
25 |
$self->db_query($query, bind => [ $id, $ref->{description}, $ref->{sortkey} ]);
|
|
26 | 26 |
|
27 |
$query = qq|UPDATE taxzone_charts SET taxzone_id=$id WHERE taxzone_id=0|; |
|
28 |
$self->db_query($query); |
|
27 |
$query = qq|UPDATE taxzone_charts SET taxzone_id=$id WHERE taxzone_id=0|;
|
|
28 |
$self->db_query($query);
|
|
29 | 29 |
|
30 |
$sth->finish; |
|
30 |
$query = qq|DELETE FROM tax_zones WHERE id=0|; |
|
31 |
$self->db_query($query); |
|
32 |
|
|
33 |
#Adapt other tables to the new id: |
|
34 |
$query = qq|UPDATE ar SET taxzone_id=$id WHERE taxzone_id=0|; |
|
35 |
$self->db_query($query); |
|
36 |
|
|
37 |
$query = qq|UPDATE ap SET taxzone_id=$id WHERE taxzone_id=0|; |
|
38 |
$self->db_query($query); |
|
39 |
} |
|
31 | 40 |
|
32 |
$query = qq|DELETE FROM tax_zones WHERE id=0|; |
|
41 |
#Set Constraints: |
|
42 |
$query = qq|ALTER TABLE ar ADD FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id)|; |
|
33 | 43 |
$self->db_query($query); |
34 | 44 |
|
45 |
$query = qq|ALTER TABLE ap ADD FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id)|; |
|
46 |
$self->db_query($query); |
|
47 |
|
|
48 |
$sth->finish; |
|
49 |
|
|
35 | 50 |
return 1; |
36 | 51 |
} # end run |
37 | 52 |
|
Auch abrufbar als: Unified diff
Änderung von Upgrade-Script change_taxzone_id_0
Die Tabellen ar und ap werden jetzt auch an den ID-Wechsel angepasst.
Weiterhin werden 2 Fremdschlüssel gesetzt, die durch den Wechsel
aufgefallen sind.