Avatar billede jfki75 Nybegynder
25. juli 2006 - 09:33 Der er 9 kommentarer og
3 løsninger

kolonne rækkefølge

Hej

Er det muligt at ændre rækkefølgen på kolonne i en Oracle DB!

Jeg har eks 3 kolonner

A, C, B, men vil gerne have A, B, C??
Avatar billede teepee Nybegynder
25. juli 2006 - 09:39 #1
Du kan rename tabellen. Oprette en ny i rigtig rækkefølge og kopiere data over. Ellers er der vist ikke.
Avatar billede pnielsen Nybegynder
25. juli 2006 - 09:42 #2
Der er 2 muligheder
- lav et view ovenpå tabellen i den rækkefølge du ønsker
- recreate tabellen med den rigtige rækkefølge
Avatar billede pgroen Nybegynder
25. juli 2006 - 10:12 #3
Eller, hvis du nødig vil droppe hele tabellen:

Ex:
CREATE TABLE t (a NUMBER, c NUMBER, b NUMBER);
ALTER TABLE t DROP COLUMN c;
ALTER TABLE t ADD (c NUMBER);

(herudover er der også brug for lidt kopierings-gymnastik, hvis du har data i kolonne C)
Avatar billede jfki75 Nybegynder
25. juli 2006 - 10:19 #4
Jeg har data i alle 3 kolonner, som jeg skal have med over!

Jeg har opretten en tabel X med de 3 kolonner A,C,B..

Har i et forslag til en hvorledes flytningen af data håndteres??
Avatar billede pnielsen Nybegynder
25. juli 2006 - 10:31 #5
insert into x select a,c,b from tabel
Avatar billede teepee Nybegynder
25. juli 2006 - 10:58 #6
Hvis du har en masse foreign key constraints og alt muligt andet, så vil jeg anbefale at du gør absolut ingenting. Ændringen tjener udelukkende et æstetisk formål, og gør intet for databasens virke. der er en meget teknisk måde at ændre rækkefølgen på uden at du behøves at ændre i data men jeg har aldrig brugt det: http://www.psoug.org/reference/dbms_redefinition.html
Avatar billede pnielsen Nybegynder
25. juli 2006 - 11:06 #7
Nemlig teepee - også derfor jeg anbefalede at an bare lavede et view ovenpå med en rækkefølge han ønskede det ud i.

Eneste grund jeg kan tænke mig til at man skulle lave om på rækkefølgen var vistnok en begrænsning engang, hvor long raw skulle ligge sidst i en tabel ?
Kan ikke helt huske det mere.. mener det var noget i den stil.
Avatar billede Slettet bruger
25. juli 2006 - 12:39 #8
Hej jfki75

Vil du ikke skrive, hvorfor du skal have lavet rækkefølgen om? Jeg kan ikke forestille mig, hvorfor man skulle have det behov.

mvh Jørn
Avatar billede jfki75 Nybegynder
25. juli 2006 - 14:58 #9
For overskuelighedens skyld!! Jeg har 10-20 attributter på mine data, derfor kan det være rart at have dem i den række følge som de skal udfyldes i!!
Avatar billede pnielsen Nybegynder
25. juli 2006 - 15:09 #10
så lave et view på det istedet - langt bedre og MEGET mindre farligt end det du har gang i. Du risikere at miste contraints og indexes afhængig af hvordan du gør det..

Viewet kan du jo lave som du vil og evt også sortere dine kolonner.

Good luck.
Avatar billede pnielsen Nybegynder
25. juli 2006 - 15:21 #11
eksempel:

> CREATE table tabel1
  2  (
  3    col1  VARCHAR2(10),
  4    col2  VARCHAR2(10),
  5    col3  VARCHAR2(10)
  6  );

Table created.

> drop view v_tabel1;

View dropped.


> CREATE OR REPLACE VIEW v_tabel1
  2  AS
  3  select col1,col3,col2 from tabel1;

View created.


> -- indsætter data i viewet
> insert into v_tabel1 values('a1','c1','b1');

1 row created.


> -- indsætter data i tabellen
> insert into tabel1 values('a2','b2','c2');

1 row created.


> commit;

Commit complete.

> select * from v_tabel1;

COL1      COL3      COL2
---------- ---------- ----------
a1        c1        b1
a2        c2        b2


> select * from tabel1;

COL1      COL2      COL3
---------- ---------- ----------
a1        b1        c1
a2        b2        c2

>
Avatar billede Slettet bruger
25. juli 2006 - 16:16 #12
Det kan det være lige meget, hvad rækkefølge attributterne skal udfyldes i!

Det afhænger vel af applikationen. Rækkefølgen fastlægger du - når du siger

SELECT A, C, B...

For du kunne vel aldrig finde på bare at skrive

SELECT *

Hvis du bruger det sidste, vil du under alle omstændigheder støde på problemer, når du flytter fra eet miljø til et andet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester