![]() |
Datenbank: Firebird • Version: 1.0.0.794 • Zugriff über: BDE
FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hi Leute,
möchte meine Datenbankstruktur wie im Titel schon beschrieben anpassen: Dabei möchte ich mehere Felder vom Typ Double Precision zum Typ DECIMAL(9,2) umwandeln. OHNE dabei die DAten zu verlieren. Hatte gehofft das :
SQL-Code:
Leider wird dieses Statement nicht angenommen.
ALTER TABLE XYZ
ALTER COLUMN BANK_EINZAHLUNG TYPE DECIMAL(9,2); Jemand eine Idee ? Danke und Gruß Data |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Füge temporär eine weitere Spalte hinzu.
|
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Zitat:
1) neue spalte anlegen 2) daten aus der alten spalte mit nem cast einfügen (sollte ja funktionieren, '9,2' liegt im double-bereich) 3) alte spalte löschen, neue umbenennen und gegebenenfalls not null setzen schritt 3 würde ich erst nach einem check ausführen (sum(abs(alt-neu)) = 0 oder sowas) |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hi,
ok zwar nicht schön aber das funktioniert bestimmt. Muss mir jetzt nur nen kleines Tool bauen, was das ganze über mehere Tabellen und Felder automatisch macht. Falls aber jemand noch auf eine "elegantere" Lösung kommt, immer raus damit ;-) Vielen Dank, Data |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hi Data,
ab Version 1.5 geht es auf jeden Fall auch so: 1. Neue Domain anlegen 2. Update auf Systemtabellen:
SQL-Code:
Ob es unter 1.0x funktioniert, musst du mal testen.
CREATE DOMAIN D_NUMERIC_9_2 AS NUMERIC(9,2);
update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'D_NUMERIC_9_2' where (RDB$FIELD_NAME = 'BANK_EINZAHLUNG') and (RDB$RELATION_NAME = 'XYZ'); Frank |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hi,
werde ich morgen testen, jetzt muss ich mich erstmal um andere Belange kümmern. Danke an alle, Greetz Data |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hallo,
ibexpert (personal) runterladen. Die Spalte ändern -> die benötigte Query wird angezeigt. Zum Numeric(9,2), probier das erst mal aus. Kleinere Numeric, z.B. numeric(8,2) werden von Firebird intern als Integer gespeichert. siehe auch ![]() Warum willst du das double precision denn ändern ? Heiko |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
1. Geh in IBExpert hin und extrahiere die Metadaten inkl. Datatables.
2. ändere den Datentyp im SQL-Script. 3. Tabelle neu erzeugen, alte vorher löschen 4. Daten neu einfügen und fertig. |
Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Hi Hansa,
von Prinzip auf jeden Fall machbar; Leider in der Praxis nicht so umsetzbar, betrifft ca. 100 Standorte mit jeweils lokaler DB. Wollte die Umwandlung eigentlich automatisch innerhalb eines Programm-Updates durchführen. Gruß Data |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz