habe mich riesig gefreut über die einfache Lösung des primary key, doch leider klappt es bei mir nicht. ich füge unter Contrains (im Register Eigenschaften) den Namen ein, aber ich kann es nicht bestätigen. Was mach ich falsch?
du solltest noch wissen, dass SERIAL kein echter Datentyp ist, sondern eine Art MACRO … das dir ein INTEGER Feld erzeugt und eine SEQUENCE die als “DEFAULT” des Feldes verwendung findet -> automatisches generieren von Integer-Werten …
ein (Primary-Key) Constraint hat immer einen Namen …
diesen Namen hast du eingegeben (Reiter 1 - “Eigenschaften”) … wenn deine ID-Spalte z.B. id_table heisst, dann nenn den Constraint pk_id_table … ist nur eine Empfehlung
dann musst du noch sagen, welche Felder zu dem Primärschlüssel gehören (Reiter 2 - “Spalten”), das ist dann sinnvoller Weise die eine ID-Spalte die du dafuer vorgesehen hast.
Das mag auf den ersten Blick umständlich sein - aber dank dem Hinweis von ads weisst du, dass Primärschlüssel über mehrere Felder gehen könnten. Die kannst du also unter Reiter 2 erledigen.
mit PostgreSQL habe ich erst seit kurzem zu tun. Installation hat bestens geklappt. Zum managen nutze ich pgAdmin III.
Beim Erstellen einer Spalte mit dem Datentyp serial, welche später als inkrementieller Primärschlüssel dienen soll, ist die Erstellung von pgAdmin III mit der folgenden Meldung abgebrochen worden:
“FEHLER: Sequenz muss selben Eigentümer wie die verknüpfte Tabelle haben.”
Bitte um Hilfe, wie man diese Meldung interpretiert und den Konflikt löst.
habe die Datenbank neu angelegt und den Eigentümer dieser sofort definiert. Jetzt klappt es.
Es würde mich dennoch interessieren, warum es nicht ging. Ich hatte, meiner Meinung nach, alle Eigentümereigenschaften und Beziehungen kontrolliert. Offensichtlich doch etwas übersehen.
du hast die tabelle unter einem anderen user erzeugt als mit dem du dich nun zum estellen des serial-feldes angemeldet hast.
wenn du z.B. beim erzeugen der Tabelle mit ‘postgres’ angemeldet warst, empfielt es sich, dass du auch beim adden des serial-feldes als ‘postgres’ angemeldet bist.
weil halt dabei eine sequence erzeugt wird und das dbms moechte, dass es den selben owner hat wie die table.