Hvordan angi automatisk økning av primærnøkkel i PostgreSQL?
Jeg har en tabell i PostgreSQL med 22 kolonner, og jeg vil legge til en automatisk inkrement primærnøkkel.
Jeg prøvde å opprette en kolonne kalt id
av typen BIGSERIAL, men pgadmin svarte med en feil:
ERROR: sequence must have same owner as table it is linked to.
Vet noen hvordan du løser dette problemet? Hvordan legger jeg til en automatisk inkrementerende primærnøkkel i PostgreSQL uten å gjenskape tabellen igjen?
251
3
Prøv denne kommandoen:
Prøv det med samme DB-bruker som den du har opprettet tabellen med.
Automatisk inkrementering av primærnøkkel i postgresql:
Trinn 1, opprett tabellen: .
**Trinn 2, sett inn verdier i tabellen slik, legg merke til at mytable_key ikke er spesifisert i den første parameterlisten, dette fører til at standardsekvensen økes automatisk.
*Trinn 3, velg fra tabellen din: .
Trinn 4, tolk utdataene:
Legg merke til at kolonnen mytable_key har blitt automatisk inkrementert.
ProTip:
Du bør alltid bruke en primærnøkkel på tabellen din fordi postgresql internt bruker hashtabellstrukturer for å øke hastigheten på innsetting, sletting, oppdatering og valg. Hvis en primærnøkkelkolonne (som er tvunget unik og ikke-null) er tilgjengelig, kan den være avhengig av å gi et unikt frø for hash-funksjonen. Hvis ingen primærnøkkelkolonne er tilgjengelig, blir hash-funksjonen ineffektiv ettersom den velger et annet sett med kolonner som nøkkel.
Opprett en automatisk inkrementerende primærnøkkel i postgresql, ved hjelp av en egendefinert sekvens:
Trinn 1, opprett sekvensen din: **.
Trinn 2, opprett din tabell
Trinn 3, sett inn i tabellen din {{10451604}}
Trinn 4, følg radene Trinn 4, følg radene
De to radene har nøkler som starter på 1 og inkrementeres med 1, som definert av sekvensen.
Bonus Elite ProTip:
Programmerere hater å skrive, og å skrive ut
nextval('splog_adfarm_seq')
er irriterende. Du kan skriveDEFAULT
for den parameteren i stedet, slik som dette:For at ovennevnte skal fungere, må du definere en standardverdi for den nøkkelkolonnen i splog_adfarm-tabellen. Som er penere.