28. marts 2005 - 19:20Der er
3 kommentarer og 1 løsning
Sequences efter restore
Hejsa, jeg har lige importeret / restored et dump fra en postgreSQL-database til en anden, men mine sequences er fucked up, som om de ikke kom med?
Findes der en "nem" løsning, så jeg bliver fri for at iterere igennem alle sequences, og krydstjekke next_val med primær-nøgler / uniques på deres tilhørende tabeller?
Dine sequences er kommet med, men de har ikke fået opdateret deres værdier, hvilket ikke sker automatisk. Det kan du gøre med følgende statement:
SELECT setval('<sequence_name>', max(<primary_key>)) FROM <table>;
Synes godt om
Slettet bruger
29. marts 2005 - 10:18#2
Super, tusind tak for hjælpen, prøver det når jeg kommer hjem. Er der egentligt nogen ide i at de ikke automatisk bliver opdateret? Hvad kan man opnå vha. det?
Synes godt om
Slettet bruger
29. marts 2005 - 10:25#3
Jamen, hov.... så skal jeg jo alligevel iterere igennem alle tabellerne, bruge "\d <tablename>" finde ud af sekvensnavne, der er måske bare ikke en enkelt simpel løsning?
Hrmmm, det ser ud til jeg må lave et script der kan iterere sig igennem alle tabeller, tjekke for sequences og så gøre den på den måde - så er spørgsmålet bare... "Hvordan får man fat i navnet på sequences for en table, i en query?"
Automatisk opdatering af sequences kan f.eks. være et problem, hvis nu man afvikler et script der forsøger at overskrive en eksisterende sequence, hvilket vil fejle, og efterfølgende automatisk opdaterer det, vil den ændre en eksisterende sequence.
Jeg kender desværre ikke lige en måde at få fat i navnene på eksisterende sequences. I MS SQL kan det lade sig gøre, fordi der er adgang til tabeller indeholdende metadata, men det er der så vidt jeg ved ikke i PostgreSQL. Men ellers tager det vel ikke så lang tid at skrive et setval-statement for hver sequence...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.