sewoha
I'm new here

DB Schemata - Datentyp ändern

Jump to solution

Hallo,

wir haben ein Datenbank Schemata angelegt.

Hier haben wir eine Tabelle mit mehreren Spalten.

Bei einer Spalte hat sich nun der Datentyp geändert.

Statt xs:integer soll es nun ein xs:string werden.

Wie ändert man dies, ohne das es in der Oracle DB als neue Spalte angelegt wird?

Vielen Dank

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Herr Wörner,

die Frage verstehe ich hoffentlich falsch Smiley Wink

Wenn FirstSpirit eine Spalte vom Typ string verwenden würde und in der Datenbank der Typ integer stehe würde, könnten die Daten nicht sicher gespeichert werden.

Also gehe ich mal von dem folgenden Szenario aus:

- Sie haben die entsprechende Spalte in der Dtaenbank geändert (von integer auf string)

- Sie wollen nun, dass FirstSpirit einen kompatiblen Datentyp verwendet.

Wenn die Schema Synchronisation aktiviert ist, würde eine neue Spalte angelegt, sobald Sie das Schema bearbeiten und speichern [und zwar vom Typ integer, da dieser Typ noch im Schema gespeichert ist und der Typ inkompatibel mit dem Spaltentyp in der Datenbank ist].

Lösung:

- Bearbeiten Sie das Schema

- Rufen Sie über das Kontextmenü Extern Bearbeiten/XML Schema auf

- Suchen Sie die entsprechende Spalte und ändern Sie deren Typ kompatibel ab

- Speichern Sie das extern bearbeitete Schema und übernehmen Sie die Änderungen (sofern Autosave deaktiviert wurde)

- Wenn vorher der Typ in der Datenbank entsprechend geändert wurde, so dass nun Schema und Datenbank wieder kompatibel sind wird beim Speichern keine neue Spalte angelegt werden.

Das Problem hierbei ist die Kompatibilität. Je nachdem, wieviele Zeichen für die Spalte im Schema erlaubt sind, wird ein anderer Typ in der Datenbank benötigt.

Beispiel für den Typ string:

<xs:element dbName="<SPALTENNAME IN DER DB>" javaType="java.lang.String" length="255" name="<FirstSpirit NAME DER SPALTE>" nullable="1" type="xs:string"/>

Wenn das Schema nicht synchronisierbar ist (Einstellung in den Projekteigenschaften beim Einbinden der entsprechenden Datenbank), wird nicht versucht, die Spalte in der Datenbank beim Speichern zu synchronisieren. Dafür bekommen Sie aber Fehler beim Speichern des Datensatzes, wenn der Spaltentyp in der Datenbank nicht passt.

Viele Grüsse aus Dortmund,

  Holger Höbbel

View solution in original post

0 Kudos
5 Replies
hoebbel
Crownpeak employee

Hallo Herr Wörner,

die Frage verstehe ich hoffentlich falsch Smiley Wink

Wenn FirstSpirit eine Spalte vom Typ string verwenden würde und in der Datenbank der Typ integer stehe würde, könnten die Daten nicht sicher gespeichert werden.

Also gehe ich mal von dem folgenden Szenario aus:

- Sie haben die entsprechende Spalte in der Dtaenbank geändert (von integer auf string)

- Sie wollen nun, dass FirstSpirit einen kompatiblen Datentyp verwendet.

Wenn die Schema Synchronisation aktiviert ist, würde eine neue Spalte angelegt, sobald Sie das Schema bearbeiten und speichern [und zwar vom Typ integer, da dieser Typ noch im Schema gespeichert ist und der Typ inkompatibel mit dem Spaltentyp in der Datenbank ist].

Lösung:

- Bearbeiten Sie das Schema

- Rufen Sie über das Kontextmenü Extern Bearbeiten/XML Schema auf

- Suchen Sie die entsprechende Spalte und ändern Sie deren Typ kompatibel ab

- Speichern Sie das extern bearbeitete Schema und übernehmen Sie die Änderungen (sofern Autosave deaktiviert wurde)

- Wenn vorher der Typ in der Datenbank entsprechend geändert wurde, so dass nun Schema und Datenbank wieder kompatibel sind wird beim Speichern keine neue Spalte angelegt werden.

Das Problem hierbei ist die Kompatibilität. Je nachdem, wieviele Zeichen für die Spalte im Schema erlaubt sind, wird ein anderer Typ in der Datenbank benötigt.

Beispiel für den Typ string:

<xs:element dbName="<SPALTENNAME IN DER DB>" javaType="java.lang.String" length="255" name="<FirstSpirit NAME DER SPALTE>" nullable="1" type="xs:string"/>

Wenn das Schema nicht synchronisierbar ist (Einstellung in den Projekteigenschaften beim Einbinden der entsprechenden Datenbank), wird nicht versucht, die Spalte in der Datenbank beim Speichern zu synchronisieren. Dafür bekommen Sie aber Fehler beim Speichern des Datensatzes, wenn der Spaltentyp in der Datenbank nicht passt.

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Vielen Dank für Ihre Antwort.

Wie komme ich denn an das Kontextmenü Extern Bearbeiten/XML Schema ??

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Wörner,

mit einem Rechtsklick auf den Schema Knoten, den Sie zuvor in den bearbeitungsmodus versetzt haben müssen.

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Es kann sein, das dies nur (Projekt-)Admins zur Verfügung steht, das habe ich nicht kontrolliert. Steht aber in der Doku Smiley Wink

Peter
0 Kudos

Habe es gefunden.

Vielen Dank!

Konnte mein Problem damit lösen!

0 Kudos