Syntax-Fehler

Hallo,

beim Versuch, die Postgre-Tabelle “Fundstuecke” anzulegen, kommt es zu einer Fehlermeldung: Syntax-Fehler bei Zeichen 624.
Constraint Art_id-key(
Momentan weiß ich nicht weiter…

CREATE TABLE Fundstuecke(ID BIGSERIAL,Excav_ID INTEGER,Area_ID INTEGER,Befund_ID INTEGER,Fund_ID INTEGER,Mus_Slg VARCHAR(50),Inv_Nummer VARCHAR(20),Eing_Datum VARCHAR(25),Magazin VARCHAR(50),Raum_Platz VARCHAR(25),Gegenstand_ID INTEGER,Art_ID INTEGER,Gegenstand VARCHAR(50),Material_ID INTEGER,Anzahl INTEGER,Kopie BOOLEAN,ZeitStell_ID INTEGER,Inventar_Alt VARCHAR(50),Zustand_ID INTEGER,Restauro BOOLEAN,Laenge NUMERIC,Breite NUMERIC,Hoehe NUMERIC,Technik VARCHAR(50),Bemerkung TEXT,Deleted BOOLEAN,Angelegt CHAR(18),GeAendert CHAR(18),Exportiert CHAR(18),CONSTRAINT Fundstuecke_pkey PRIMARY KEY(ID),CONSTRAINT Area_ID_key(Area_ID),CONSTRAINT Art_ID_key(Art_ID),CONSTRAINT Befund_ID_key(Befund_ID),CONSTRAINT Excav_ID_key(Excav_ID),CONSTRAINT Fund_ID_key(Fund_ID),CONSTRAINT Gegenstand_ID_key(Gegenstand_ID),CONSTRAINT Inv_Nummer_key(Inv_Nummer),CONSTRAINT Material_ID_key(Material_ID),CONSTRAINT Mus_Slg_key(Mus_Slg),CONSTRAINT ZeitStell_ID_key(ZeitStell_ID),CONSTRAINT Zustand_ID_key(Zustand_ID)) WITH OIDS;

Gruß Bernd :slight_smile:

Hallo.

Du müsstest vielleicht auch noch angeben, welche Art von Constraint du anlegen möchtest. Falls du Version 8.1 von PostgreSQL benutzt, findest du hier etwas in der Doku: http://www.postgresql.org/docs/8.1/static/ddl-constraints.html

Gruß, eazy

Pegasus0211, du bist einsame Spitze. Lesbarkeit von Code ist bei der Programmierung das oberste Gebot! Dass man einen SQL-Befehl mit einer Länge von mehr als 1000 Zeichen ohne Formatierung hier angibt, ist gegenüber jedem Forumsteilnehmer eine Zumutung. Derartiger Code dürfte nur noch von Spezialisten wie Dich lesbar sein.

Und wo sollte der Fehler auftreten? Nähe “Constraint Art_id-key(”? Gibt es nicht!



mfg

fristo

Hallo,

danke für die Antworten; habe die Tabelle jetzt integriert.

Über mehrere Complaints hätte es wohl doch nicht funktioniert.

CREATE TABLE Fundstuecke(ID BIGSERIAL,
Excav_ID INTEGER,
Area_ID INTEGER,
Befund_ID INTEGER,
Fund_ID INTEGER,
Mus_Slg VARCHAR(50),
Inv_Nummer VARCHAR(20),
Eing_Datum VARCHAR(25),
Magazin VARCHAR(50),
Raum_Platz VARCHAR(25),
Gegenstand_ID INTEGER,
Art_ID INTEGER,
Gegenstand VARCHAR(50),
Material_ID INTEGER,
Anzahl INTEGER,
Kopie BOOLEAN,
ZeitStell_ID INTEGER,
Inventar_Alt VARCHAR(50),
Zustand_ID INTEGER,
Restauro BOOLEAN,
Laenge NUMERIC,
Breite NUMERIC,
Hoehe NUMERIC,
Technik VARCHAR(50),
Bemerkung TEXT,
Deleted BOOLEAN,
Angelegt CHAR(18),
GeAendert CHAR(18),
Exportiert CHAR(18),
CONSTRAINT Fundstuecke_pkey PRIMARY KEY(ID)) WITH OIDS;


CREATE INDEX Area_ID_k ON Fundstuecke (Area_ID);

CREATE INDEX Art_ID_k ON Fundstuecke (Art_ID);

CREATE INDEX Befund_ID_k ON Fundstuecke (Befund_ID);

CREATE INDEX Excav_ID_k ON Fundstuecke (Excav_ID);

CREATE INDEX Fund_ID_k ON Fundstuecke (Fund_ID);

CREATE INDEX Gegenstand_ID_k ON Fundstuecke (Gegenstand_ID);

CREATE INDEX Inv_Nummer_k ON Fundstuecke (Inv_Nummer);

CREATE INDEX Material_ID_k ON Fundstuecke (Material_ID);

CREATE INDEX Mus_Slg_k ON Fundstuecke (Mus_Slg);

CREATE INDEX ZeitStell_ID_k ON Fundstuecke (ZeitStell_ID);

CREATE INDEX Zustand_ID_k ON Fundstuecke (Zustand_ID);


Sorry nochmals für den obigen Spaghetti-Code; wir erzeugen die SQL-Datei aus einer Access-Datenbank mittels Delphi und achteten bei der Ausgabe nicht auf die Formatierung…das Dingens wird nur einmal benötigt.

Gruß Bernd :slight_smile:

Hallo Bernd,

nichts für Ungut, ich wollte Dir nur bewust machen, das es absolut unleserlich ist. Und es ist einen bekannte Sache, dass man die Fehler dann auch schlecht findet.

Wenn ein solcher Fehler autritt, kann man schnell die Stelle und damit die Ursache finden, indem man, beginnend vom Ende, Felder auskommentiert.

Wenn Du keine spezielle Anwendung schreibst kannst du auf “WITH OIDS” verzichten. Default, ab Version 8, ist ohne OIDS (keine Angabe).



mfg

fristo