CREATE TABLE REFERENCES Syntaxfehler

Moin!
Ich bin noch relativ neu bei PostgreSQL. Ich erstelle gerade die Datenbanken für ein kleines Hobbyprojekt. Ich möchte foreign/secondary keys benutzen aber irgendwie mache ich alles falsch. Ich habe schon x Schreibweisen versucht aber es gibt immer den selben Fehler:

Syntaxgehler bei >>user<<
ZEILE 1: ...ONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES user(user_...

Der Table ‘user’ ist bereits angelegt und enthält auch den Primary Key ‘user_id’. Ich verstehe einfach nicht was ich falsch mache. Mein Query:

CREATE TABLE  "ticket" (
	ticket_id SERIAL,
	user_id SERIAL,
	titel VARCHAR(200),
	description TEXT,
	worker_id SERIAL,
	type VARCHAR(50),
	rank INT,
	status VARCHAR(50),
	created DATE,
	closed DATE,
	PRIMARY KEY (ticket_id),
	CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES user(user_id),
	CONSTRAINT fk_worker FOREIGN KEY(worker_id) REFERENCES user(user_id)
);

Das Problem waren die Anführungszeichen. Die korrekte Syntax ist anscheinend:


CREATE TABLE  "ticket" (
	ticket_id SERIAL,
	user_id SERIAL,
	titel VARCHAR(200),
	description TEXT,
	worker_id SERIAL,
	type VARCHAR(50),
	rank INT,
	status VARCHAR(50),
	created DATE,
	closed DATE,
	PRIMARY KEY (ticket_id),
	FOREIGN KEY(user_id) REFERENCES "user"(user_id),
	FOREIGN KEY(worker_id) REFERENCES "user"(user_id)
);

Warum auch immer ich Anführungszeichen setzen muss. In der Doku steht es ohne drinne.

Weil user ein reserviertes Schlüsselwort und eine Funktion ist.

ich sehe exakt NULL Sinn darin, eine Spalte als Datentyp SERIAL und dann als FOREIGN KEY zu definieren.

[code]

CREATE TABLE  "ticket" (
	ticket_id SERIAL,
	user_id SERIAL,
...
    CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES user(user_id),

Da hast du Recht. Da habe ich überhaupt nicht mehr dran gedacht. Habe halt die ganze Zeit nur diesen verflixten Fehler gesucht ^^ Hab ich gerade zu INT geändert. Danke fürs draufhinweisen!

Am besten gewöhnst Du Dir die Verwendung von serial ganz ab, und nimmst statt dessen identity Spalten

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.