Mai mult
Cum de a stabili auto increment cheie primară în PostgreSQL?
Am un tabel în PostgreSQL cu 22 de coloane, și vreau să adăugați o creștere automată a cheii primare.
Am încercat să creeze o coloană numită " id " de tip BIGSERIAL dar pgadmin a răspuns cu o eroare:
ERROR: sequence must have same owner as table it is linked to.
Stie cineva cum pot rezolva problema? Cum adaug un a crea un auto-incrementarea cheie primară în PostgreSQL fără recrearea masa din nou?
251
7
Încercați această comandă:
Încercați să-l cu aceeași DB-user ca cea pe care o ai creat masă.
Auto-incrementarea cheie primară în postgresql:
Pasul 1, creare tabel:
Pasul 2, se introduce valori în tabel astfel, observa că mytable_key nu este specificată în prima listă de parametri, acest lucru provoacă default secvență a autoincrement.
*Pasul 3, selectați de la masa ta:**
Pasul 4, interpreta de ieșire:
Observăm că mytable_key coloana a fost auto incrementat.
ProTip:
Ar trebui să fie întotdeauna folosind o cheie primară pe masa dvs. pentru postgresql folosește intern tabel hash structuri pentru a crește viteza de insertii, șterge, actualizări și selectează. Dacă o cheie primară coloana (care este forțată unică și non-null) este disponibil, acesta poate fi depindea de a oferi un unic semințe pentru funcția de distribuire. Dacă nu există cheie primară coloana este disponibil, funcția de distribuire devine ineficient ca se selectează un alt set de coloane ca o cheie.
A crea o auto-incrementarea cheie primară în postgresql, folosind o secvență personalizat:
Pasul 1, de a crea ordine:
Pasul 2, de a crea masă
Pasul 3, se introduce în tabel
Etapa 4, observăm rânduri
În două rânduri au cheile care încep de la 1 și se incrementează cu 1, astfel cum sunt definite printr-o succesiune.
Bonus Elite ProTip:
Programatori place să tastați, și tastarea în
nextval('splog_adfarm_seq')
este enervant. Puteți de tip "DEFAULT" pentru ca parametru în schimb, ca aceasta:Pentru cele de mai sus pentru a lucra, trebuie să definiți o valoare implicită pentru care coloana cheie pe splog_adfarm masă. Care este mai frumoasa.
Dacă doriți pentru a face acest lucru în pgadmin, este mult mai ușor. Se pare că în postgressql, pentru a adăuga o creștere automată a unei coloane, avem nevoie în primul rând de a crea o creștere automată a secvenței și adăugați-l la coloană obligatorie. Am făcut-o așa.
2)Apoi se adaugă o secvență de drept clic pe secvența-> adăuga noi secvență. Dacă nu există date în tabel, lasă-ordinea de drept este, nu't face orice modificări. Doar salvați-l. Dacă nu există date existente, se adauga ultima sau cea mai mare valoare în cheie primară coloana pentru valoarea Curentă în Definiții fila așa cum se arată mai jos.
3)în cele din Urmă, se adaugă linia `nextval('your_sequence_name'::regclass) la valoarea Implicită în cheia primară așa cum se arată mai jos.
Dacă doriți să utilizați numere într-o secvență, să definească o nouă secvență cu ceva de genul
și apoi modifica masa pentru a utiliza secvența pentru id-ul:
Poate am'm un pic de târziu pentru a răspunde la această întrebare, dar am'm de lucru pe acest subiect la treaba mea :)
Am vrut să scriu coloana 'a_code' = c1,c2,c3,c4...
În primul rând am deschis-o coloană cu numele
ref_id și tipul
de serie`. Apoi mi-am rezolvat problema mea cu aceasta comanda:Am încercat următorul script cu succes a auto-increment cheie primară în PostgreSQL.