acc_trans enthält bereits eine Primärschlüsselspalte
authorMoritz Bunkus <moritz@bunkus.org>
Thu, 11 Nov 2010 16:49:46 +0000 (17:49 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 29 Dec 2010 16:30:28 +0000 (17:30 +0100)
Der war nur bisher noch nicht als solcher markiert.

Hinzu kommt, dass RDBO acc_trans_id beim Anlegen von Einträgen in
acc_trans nicht automatisch befüllt; genauer: explizit auf NULL
setzt. Das wiederum verwirrt andere Bereiche von Lx-Office.

Weiterhin gibt es einige Queries, die nicht darauf vorbereitet sind,
dass acc_trans plötzlich eine Spalte namens "id"
enthält (z.B. Reporting).

SL/DB/MetaSetup/AccTransaction.pm
sql/Pg-upgrade2/schema_normalization_3.sql [new file with mode: 0644]

index 9f6e6b4..649b464 100644 (file)
@@ -10,7 +10,7 @@ __PACKAGE__->meta->setup(
   table   => 'acc_trans',
 
   columns => [
-    acc_trans_id   => { type => 'bigint', sequence => 'acc_trans_id_seq' },
+    acc_trans_id   => { type => 'bigint', not_null => 1, sequence => 'acc_trans_id_seq' },
     trans_id       => { type => 'integer', not_null => 1 },
     chart_id       => { type => 'integer', not_null => 1 },
     amount         => { type => 'numeric', precision => 5, scale => 15 },
@@ -26,10 +26,9 @@ __PACKAGE__->meta->setup(
     taxkey         => { type => 'integer' },
     itime          => { type => 'timestamp', default => 'now()' },
     mtime          => { type => 'timestamp' },
-    id             => { type => 'integer', not_null => 1, sequence => 'acc_trans_id_seq1' },
   ],
 
-  primary_key_columns => [ 'id' ],
+  primary_key_columns => [ 'acc_trans_id' ],
 
   allow_inline_column_values => 1,
 
diff --git a/sql/Pg-upgrade2/schema_normalization_3.sql b/sql/Pg-upgrade2/schema_normalization_3.sql
new file mode 100644 (file)
index 0000000..528fc8f
--- /dev/null
@@ -0,0 +1,6 @@
+-- @tag: schema_normalization_3
+-- @description: Datenbankschema Normalisierungen Teil 3
+-- @depends: schema_normalization_2
+
+ALTER TABLE acc_trans DROP COLUMN id;
+ALTER TABLE acc_trans ADD PRIMARY KEY (acc_trans_id);