AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ALTER TABLE ... CHANGE bei Interbase?
Thema durchsuchen
Ansicht
Themen-Optionen

ALTER TABLE ... CHANGE bei Interbase?

Ein Thema von vsti · begonnen am 24. Nov 2005 · letzter Beitrag vom 24. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#1

ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 10:43
Datenbank: Interbase • Version: 6 • Zugriff über: SQLConnection / SQLQuery
Tach DP,

bei meiner Interbase Datenbank gibt es anscheinend das CHANGE Statement nicht, also z.B.

ALTER TABLE 'TEST_TABLE' CHANGE 'TEST_FIELD' 'TEST_FIELD1VARCHAR(10) Wie ich gelesen habe ist das eine Eigenschaft von MySQL...

Hintergrund ist der, dass ich Feldeigenschaften ändern möchte, ohne dass der Inhalt der Spalte verloren geht.

Gibt es in Interbase eine Alternative dazu?
Oder kann man sowas nachträglich als Prozedur in die Datenbank einfügen?
Thorsten
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#2

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 11:23
Interbase kenn ich jetzt auch nicht so gut, aber unter ORACLE würde das statt Change MODIFY heissen.
Wobei du glauch ich grundätzlich zwischen Verändern und umbenennen unterscheiden muesstest. Das ändern des Datentyps müsstest du über das MODIFY machen, das umbenennen vermutlich über RENAME.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#3

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 11:27
Moin, moin,

also es ist in FB/IB etwas leidlich gelöst, denn es geht meines Wissens nach nur über die Systemtabellen, wie in der Art:

SQL-Code:
update RDB$FIELDS set
RDB$FIELD_TYPE = 14,
RDB$COLLATION_ID = 0
where RDB$FIELD_NAME = 'RDB$15'
Würde Dir raten: Verwende IB-Expert und ändere das im Dialogverfahren. Das Programm generiert die entsprechenden SQL-Befehle und fragt Dich dann nach der Bestätigung. So durchsichtig wie bei Oracle ist das leider nicht.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 11:31
Hi,
das Umbenennen geht mit:
ALTER TABLE MEINETABELLE ALTER FELDA TO FELDB Weird die Struktur geändert, ist das sehr kompliziert, wenn ohne Domains gearbeitet wurde.
Hast du Domains, geht es wie folgt:
SQL-Code:
update RDB$RELATION_FIELDS set
RDB$FIELD_SOURCE = 'NEUER_DOMAINNAME'
where (RDB$FIELD_NAME = 'FELDNAME') and
(RDB$RELATION_NAME = 'MEINETABELLE')
Gruß, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#5

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 11:40
Klasse @mschaefer,

ich arbeite sowieso ziemlich nahe an den Systemtabellen. ich versuche einfach mal die Feldlänge mit

SQL-Code:
update RDB$FIELDS set
RDB$FIELD_LENGTH = 10
where RDB$FIELD_NAME = 'RDB$15'
zu ändern. Wenn das geht, bin ich alle Sorgen los

THX
Thorsten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 12:28
Hallo vsti.

Deine SQL-Zeile aus dem opener wird in Interbase SQL in zwei Statements gepackt:

SQL-Code:
ALTER TABLE 'TEST_TABLEALTER COLUMN 'TEST_FIELDTO 'TEST_FIELD1

ALTER TABLE 'TEST_TABLEALTER COLUMN 'TEST_FIELD1' TYPE VARCHAR(10)
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#7

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 12:39
Hm, klingt logisch,

beim Testen deiner Anweisung ergibt sich allerdings die Meldung "ungülige Änderung".

Interbase hat wohl was dagegen die Feldeigenschaften zu ändern

Aber die Lösung von mschaefer hab ich grade erfolgreich testen können
Thorsten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 13:54
Bei Verwendung von ALTER TABLE werden jede Menge Konsistenzprüfungen nebenbei erledigt. So ist es auf diese Weise nicht möglich Felder umzubenennen, die in einer CONTRAINT Klausel verbaut wurden. Beim direkten Ändern der Systemtabellen werden diese Prüfungen zumindest nicht alle durchgeführt. Ich würde grundsätzlich nur dann mit den System-Tabellen arbeiten, wenn es keine Standard-SQL Lösung für meine Anforderung gibt. Ohne ein vollständiges Verständnis der System-Objekte begibst du dich da auf sehr dünnes Eis. Ich vermute, dass die von dir direkt vorgenommene Änderung in der System-Tabelle bereits einen inkonsistenten Zustand geschaffen hat - warum sonst hätte der ALTER Befehl die Warnglocken geläutet?

Nachdenkliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#9

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 20:32
Hm, jetzt machst du mich auch nachdenklich ^^

Tja, das Problem ist ich MUSS es irgendwie hinbekommen... die Änderung via Systemtabellen hat soweit funktioniert. Wenn es wie du sagst aber zu Inkonsistenzen mit evtl. schwerwiedenden Problemen kommen kann, dann steh ich wieder am Anfang...

Ich werde es in einer Testdatenbank in verschiedenen Tabellen durchtesten und damit arbeiten, wenn sich dann keine Probleme ergeben, erachte ich das Problem als gelöst

Vielen Dank für Deine Hinweise...
Thorsten
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: ALTER TABLE ... CHANGE bei Interbase?

  Alt 24. Nov 2005, 20:38
Marabu denkt eben weiter. Wenn IBExpert schon meckert, dann ist echt Vorsicht geboten. Bei so was gilt immer : im Zweifelsfalle Tabelle neu aufbauen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz