![]() |
Datenbank: Paradox • Version: 5.0 • Zugriff über: SQL
PrimaryKey in einer Paradox-DB löschen und erstellen
Hallo,
ich habe folgendes Problem: Ich benötige eine Tabelle (in einer Paradox-DB) die einen PrimaryKey besitz, gleichzeitig möchte ich die Struktur der Tabelle ändern können (Spalte hinzufügen, ändern, löschen, etc.). Derzeit ist das ändern allerdings nur möglich, wenn die Tabelle keinen Primärschlüssel besitzt. :wall: Also war für mich jetzt der einfachste Weg den Primärschlüssel für die Zeit, in der ich Änderungen vornehme, herauszunehmen und danach wieder einzufügen. Leider funktioniert das nicht. Ich kann weder den Primärschlüssel entfernen, noch setzten wenn keiner da ist. :gruebel: Anbei noch Auszüge aus dem Quellcode:
Delphi-Quellcode:
Danke für eure Hülfe
//
doADOquery(optionsarray[2], 'alter table EXPORT add constraint PRIMARYKEY1 primary key (ID)', true, false); doADOquery(optionsarray[2], 'alter table EXPORT drop constraint PRIMARYKEY1', true, false); |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Deine Tabelle heisst "EXPORT". Das könnte aber ein reserviertes Wort sein.
Versuche mal die Tabelle umzubenennen oder setze den Tabellennamen in Anführungszeichen. Laut LocalSQL.hlp löscht man den Primärschlüssel so
SQL-Code:
Wenn alle Stricke reisen, musst du eine neue Tabelle mit der neuen Struktur erzeugen
DROP INDEX orders.PRIMARY
und die Daten aus der Tabelle rüberkopieren. |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Hallo nochmal.
Ich lösch jetzt doch die ganze tabelle und erstell diese über SQL-Anweisung neu. Das funktioniert soweit ganz gut, bis auf ... den PrimaryKey. :( Fehlermeldung (Zitat): Die Eigenschaften wird für externe Datenquellen oder für Datenbanken, die in einer früheren Version von Microsoft Jet erstellt wurden, nicht unterstützt. :?: :wiejetzt: Eine Idee woran das liegen kann? Ich will doch nur eine Paradox-Datenbank mit einem PrimaryKey erstellen... Könnt Ihr mir da nochmal helfen??? Danke |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Wie sieht das Statement aus?
|
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
SQL-Script:
create table "test.db" ( id integer not null primary key, test char(50)) |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Das DDL-Statement müßte so eigentlich funktionieren.
Funktioniert die Erzeugung ohne Primärschlüssel? Funktioniert das spätere Hinzufügen des Selbigen als Constraint? |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Ich kenne nur den Weg über die BDE-Komponenten TTable. Vielleicht läßt sich das aber verwenden.
Delphi-Quellcode:
Uses
DB, DBTables, SysUtils; Function ChkANAMNESE(DName: String): Boolean; {Die Funktion ChkANAMNESE erzeugt die Datei ANAMNESE.DB falls diese noch nicht existiert. Ist das Ergebnis True, so wurde die Tabelle neu erstellt.} Function ChkIdxANAMNESE(DName: String): Boolean; {Die Funktion ChkIdxANAMNESE erzeugt die Indizes der Datei ANAMNESE.DB falls diese noch nicht existieren. Ist das Ergebnis True, so wurden die Indizes neu erstellt.} Implementation Function ChkANAMNESE; Begin Result:=False; If Not FileExists(DName) Then With TTable.Create(Nil) Do Begin TableName:=DName; With FieldDefs Do Begin Add('AnamneseID',TFieldType(14),0,False); Add('PR_ID',TFieldType(3),0,True); Add('Datum',TFieldType(9),0,True); Add('Parameter',TFieldType(1),30,False); Add('Ergebnis_ID',TFieldType(3),0,True); Add('LE_ID',TFieldType(3),0,True); Add('Text',TFieldType(16),25,False); Add('Bemerkungen',TFieldType(1),100,False); Add('LetzteVeraenderungUser',TFieldType(1),8,True); Add('LetzteVeraenderungZeit',TFieldType(11),0,True); Add('RecordStatus',TFieldType(3),0,False); End; {end with FieldDefs} CreateTable; Result:=True; Free; ChkIdxANAMNESE(DName); End; {end with TTable} End; {end Function} Function ChkIdxANAMNESE; Begin Result:=False; With TTable.Create(Nil) do Begin TableName:=DName; Exclusive:=True; Open; IndexDefs.Clear; AddIndex('','AnamneseID', []+[ixPrimary]+[ixUnique]); AddIndex('PRIDDatum_Index','PR_ID;Datum', []+[ixCaseInsensitive]); Close; Free; End; {end with TTable} End; {end Function} End. |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Wenn schon BDE dann TQuery!
|
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Guten Morgen,
hier wird mit LocalSQL gearbeitet, nicht mit SQL:
SQL-Code:
Gültigkeitsbeschränkungen werden von der BDE verwaltet und nicht über LocalSQL manipuliert.
CREATE TABLE "test.db" (
id INTEGER, test CHAR(50), PRIMARY KEY (id) ) Grüße vom marabu |
Re: PrimaryKey in einer Paradox-DB löschen und erstellen
Hallo, ich hatte vor kurzem ähnlichen Fehler (allerdings BDE).
Zitat:
Viele Grüße Ines |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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