Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Wie PrimaryKey erstellen?

  1. #1
    BPlagens ist offline Neuer Benutzer
    Registriert seit
    06.07.2006
    Beiträge
    3

    Standard Wie PrimaryKey erstellen?

    peinliche frage, aber kann mir jemand sagen, wie ich mit pgAdmin III
    einen primärschlüssel festlegen kann?

    im pop-up menü unter "neue Spalte" und eigenschaften tabelle kann ich nichts finden!

    suche schon ewig in google, aber lande keinen treffer!?

    bin ich blind oder fange ich es ganz falsch an?

    vielen dank!
    cu
    bernd

  2. #2
    fristo ist offline Super-Moderator
    Registriert seit
    08.12.2005
    Ort
    Raum Frankfurt/Main
    Beiträge
    668

    Standard

    Hallo bernd,

    Tabellenname anklicken ==> rechte Maustaste ==> Eigenschaften ==> Constrains ==> Hinzu ==> ...



    mfg

    fristo

  3. #3
    BPlagens ist offline Neuer Benutzer
    Registriert seit
    06.07.2006
    Beiträge
    3

    Standard Danke!

    Super!

    Vielen Dank!

    Bin schon ganz verzweifelt gewesen! :-)

    Alles ganz einfach - wenn man weiß wie!


    Danke
    cu

  4. #4
    posti ist offline Neuer Benutzer
    Registriert seit
    15.10.2009
    Beiträge
    1

    Standard primary key

    hallo,

    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?

  5. #5
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    ein primärschlüssel ist ja ein etwas schwammiger meist logischer begriff, der sich einer handvoll technischen dinge zuordnen laesst

    er umfasst ein oder mehrere felder einer tabelle (einfacherweise beschränken wir uns auf ein feld -> ID)

    das feld soll meistens automatisch generiert werden, deshalb benutzt man den datentyp serial

    und er muss eindeutig sein, daher muss man ein CONSTRAINT darüber definieren.

    in PGAdminIII:
    1. neues feld mit datentyp Serial oder BigSerial (evtl. not null)
    2. ein Primary-Key Constraint auf dieses Feld definieren

    du brauchst also dort 2 Arbeitsschritte

    wenn du die tabelle via DML erzeugen willst sieh es so aus

    Code:
    CREATE TABLE <deine table> (
      dein_id_feld SERIAL NOT NULL PRIMARY KEY,
      .... 
    )
    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 ..
    Geändert von symbiont (15.10.2009 um 15:53 Uhr)

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Schritt 1 ist nicht unbedingt notwendig.

    Man könnte auch einen natural primary key haben, den kann man genausogut mit einem Constraint belegen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Schritt 1 ist nicht unbedingt notwendig.

    Man könnte auch einen natural primary key haben, den kann man genausogut mit einem Constraint belegen.
    ja .. ich habe ja darauf hingewiesen, dass sich das beispiel auf den gemeinten fall beschraenkt -> er will sowas wie ein ID feld ..

    @Posti
    was ads meint:

    es gibt auch leute die "natuerliche schluessel" verwenden ... also z.B. sowas wie die Auftrag-Nr fuer den Auftrag,

    dann wuerdest du das Feld AuftragNr mit PRIMARY KEY definieren ..

    ein PRIMARY KEY kann sich auch ueber mehrere Felder erstrecken .. z.B. bei einer Auftrags-Position dann ueber AutragNr + PositionNr

    Man sollte sich beim Design der DB auf eine Strategie festlegen ...
    Geändert von symbiont (15.10.2009 um 15:59 Uhr)

  8. #8
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    751

    Standard

    Zitat Zitat von posti Beitrag anzeigen
    hallo,

    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?
    Hast du denn ein passendes Feld ausgewählt?

    CU Uwe
    Have a lot of fun!

  9. #9
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zwei Dinge:
    1. 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

    2. 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.

    oder du machst das per DML:
    Code:
    ALTER TABLE my_table ADD PRIMARY KEY (id_table, nochn_feld, usw ... );
    dann wird automatisch ein Name fuer den Constraint vergeben .. der auch pk_id_table heisst
    Geändert von symbiont (15.10.2009 um 19:37 Uhr)

  10. #10
    ThePolyglot ist offline Neuer Benutzer
    Registriert seit
    05.11.2009
    Ort
    Hamburg
    Beiträge
    4

    Standard Erstellen von Spalte mit Datentyp serial mit Fehlermeldung

    Hallo,

    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.

    Danke.

    Gruß,

    Vitali

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum