![]() |
Firebird -->Create table
hallo,
folgendes geht: CREATE TABLE test (col INTEGER) folgendes geht nicht: CREATE TABLE test (col VARCHAR(24)) Fehlermeldung "-607 This Operation is not defined for systemtables" weis jemand weiter? |
Re: Firebird -->Create table
Normalerweise sollte das funktionieren.
Hast du vorher mit
SQL-Code:
deine Tabelle gelöscht, bevor du die Tabelle neu anlegst? Sowohl der Tabellenname als auch der Spaltenname sind sonst bereits vorhanden...
DROP TABLE test;
Grüße Mikhal |
Re: Firebird -->Create table
ja, das war jetzt nur ein beispiel
dasselbe Problem tritt auf wenn ich mit ALTER TABLE eine spalte adde mit INTEGER gehts, mit VARCHAR legt er eine spalte an die aber fehlerhaft ist (ich kann nichts hinneinschreiben) und beim disconnecten tritt eine fehler auf und die Spalte wird wieder gelöscht |
Re: Firebird -->Create table
hallo C
wie greifst du auf firebird zu. das solltest du erst mal erklären. wir sprechen hier uber eine SQL DB da ist die transaktion eine zwingende vorraussetzung. frage: wie machst du die Transaktionssteuerung. raik |
Re: Firebird -->Create table
ich verwende die Zeos komponenten
und transaktion :gruebel: keine Ahnung fals es was hilft ich verwende Firebird-Embedded und die "Datenbank" wird nur von einem benutzer verwendet |
Re: Firebird -->Create table
hast du dir das tut von DOMO SOKRAT durchgelesen . ist hier im forum verfügbar. nutze mal die suche.
raik |
Re: Firebird -->Create table
ja, bin grade drüber
also ich hab mal bei TransactIsolationLevel tiSerializable eingestellt weils ja eigentlich nur einen benutzer für die datenbank gibt. immernoch der selbe fehler bei allen CHAR Datentypen (varchar, char, caracter) funktioniert es nicht |
Re: Firebird -->Create table
@C
Frag's Pferd warum das nicht geht. :gruebel: Sieht für mich nach einem korrekten DML-Statement aus. @Raik Etwas OffTopic Transaktionen bei DDL? :gruebel: Was soll das bringen? Es wird in jeder DB, mit der ich je gearbeitet habe, autom. ein Commit für die betreffenden Systemtabellen ausgelöst. Ein...
SQL-Code:
... heißt, die Tabelle wird sofort erzeugt.
CREATE TABLE Miep (PK integer not null, SomeField VarChar(55))
Es gibt DBs (wie zum Bleistift Oracle), die haben sich dabei so zickig, dass sie dieses Commit sogar für die Host transaktion ausführen :roll: :
SQL-Code:
Man würde das erwarten:
declare
NewPK Integer; begin INSERT INTO SomeTable i (i.SomeField) VALUES ('lalelu') RETURNING i.PK INTO NewPK; COMMIT; UPDATE SomeTable u SET u.SomeField = 'Hallo' WHERE u.PK = NewPK; EXECUTE IMMEDIATE 'CREATE TABLE Miep (PK integer not null, SomeField VarChar(55))'; ROLLBACK; end;
Code:
Da aber das DDL-Statement ein Commit auslöst steht das drin (Das RollBack is wirkungslos):
PK SomeField
1 lalelu
Code:
Mangels FB in der Firma kann ich dir jetzt nicht sagen, ob FB zu den "zickigen DDL'lern" gehört oder nicht ;)
PK SomeField
1 Hallo Vielleicht ist FB auch so konsistent, dass es in einer Serializable transaction kein DDL gestattet. :) edit: 5 Mio. Tippfehler noch ein Edit: Boah, da hatte ich doch tatsächlich DML statt DDL geschrieben :oops: |
Re: Firebird -->Create table
@robert
Zitat:
letzte woche hatte ich aber auch das problem, das eine procedure nicht das gewünschte ergebnis geliefert hat, bis ich merkte, nach zwei stunden :oops: , das ich den wert den ich abfragte noch nicht commitet hatte. na ja, ich habe zur zeit andere probleme siehe KT :mrgreen: raik |
Re: Firebird -->Create table
Zitat:
Das oben zitierte Statement wird bei mir fehlerfrei abgearbeitet. |
Re: Firebird -->Create table
Welchen SQL-Dialekt hast du eingestellt, Firebird Embedded ist da sehr kritisch! Bei Firebird 1.5x muß es Dialekt 3 sein.
Grüße Mikhal |
Re: Firebird -->Create table
so,
ich habe "DEFAULT CHARACTER SET" von ISO8859_1 auf NONE geändert (beim Createn der DB) jetz gehts :gruebel: noch ne Frage: ich speichere auch grössere Texte ab, VARCHAR(10000) ist da wohl nicht die beste Lösung oder? kann man nach BLOB sortieren lassen mit ORDER BY? wie speichert man grössere texte am besten? |
Re: Firebird -->Create table
Zitat:
|
Re: Firebird -->Create table
Zitat:
Zitat:
BLOB SUB_TYPE TEXT SEGMENT SIZE 80 Ob danach sortieren kann habe ich nich nicht ausprobiert. Ich vermute aber das es nicht gehen wird. |
Re: Firebird -->Create table
wie kann ich eine tabelle samt Metadaten kopieren?
mit CREATE TABLE tab SELECT * FROM other_tab gehts offenbar nicht (auch nicht mit AS vor dem select) und wie geht das umbenennen von tabellen? gibt es eine referenz wo sowas drin steht? aus meiner kann ich nichts zu den Problemen finden |
Re: Firebird -->Create table
imho geht das nicht, tabellen und spalten lassen sich nicht umbenennen. du kannt aber eine neue anlegen, dann die inhalte kopieren und am schluss die eine tabelle löschen!
|
Re: Firebird -->Create table
wie kann ich eine neue tabelle anlegen ohne die spaltennamen und datentypen zu kennen?
also eine kopie PS also Spalten lassen sich mit ALTER TABLE umbenennen |
Re: Firebird -->Create table
kann zeos das nicht, informationen der datenbanken ausgeben?
|
Re: Firebird -->Create table
Zitat:
Mach' Dir mal den Spaß und plaziere noch ein TDBGrid und ein TDataSource auf der Form und verbinde das DBGrid über die DataSource mit dem ZSQLMetadata. Nun kannst Du im Grid sehen, welche Infos im Resultset als Metadaten zur Verfügung gestellt werden :cyclops: . Du kannst Dir ZSQLMetadata wie eine Art TTable vorstellen, die Metadaten der Datenbank enthält. Spiele einfach mal ein wenig mit den Properties von ZSQLMetadata rum und Du wirst sehen, wie einfach es ist, die gewünschten Metadaten zu erhalten. :shock: Vorsicht :!: beim Einsatz von ZEOS in Version 6.1.5! Hier kann es im ZSQLMetadata gelegentlich zu ungereimtheiten kommen. ZSQLMetadata-Kompo ist erst in Version 6.5 von diesen Fehlern befreit. So! Ich hoffe, das hilft ein wenig weiter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 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