SQL> desc emp2 Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
SQL> alter table emp2 2 add (salary number(7,2));
Table altered.
SQL> update emp2 2 set salary=sal;
14 rows updated.
SQL> commit;
Commit complete.
SQL> desc emp2 Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SALARY NUMBER(7,2)
pnielsen -> Det virker ok, men når jeg skal slette den gamle kopi, får jeg Keyword missing, nogen ide hvofor det sker: ALTER TABLE TEST DROP TABLE FIELDTEST
Table: TEST findes og field FIELDTEST findes i tabel
Sorry, at jeg først svare nu. Jeg har ikke været hjemme før nu :(
Inden du gør noget vil jeg anbefale dig at tage en export af tabellen, eller lave en kopi (create table test as select * from DINTABEL;).
stigc: er det ikke nøjagtigt det samme de to ting du nævner? >>\"ALTER TABLE TEST DROP FIELDTEST\", >>\"ALTER TABLE table_name DROP column_name \" Hvis nu din tabel hedder test og din kolonne hedder fieldtest! ;-) men faktisk hedder den: \"ALTER TABLE table_name DROP COLUMN column_name;\" eller ALTER TABLE TEST DROP COLUMN FIELDTEST;
For at være sikker på hvad din fejl betyder, vil jeg bede dig skrive den Ora-xxxx fejl du får! Men umiddelbart lyder det som om det er en ora-905, og den kan du løse ved ovenstående!
Jeg kan jo kun give pnielsen ret, MEN ... Der er et par ting, du skal være opmærksom på: 1) At droppe et felt og lægge det til igen ændrer på din tabelstruktur, så du muligvis får problemer med rækkefølgen af dine felter. 2) At droppe felter generelt, kan give problemer med genbrug af plads i databasen, lidt afhængig af hvilke typer felter du dropper / gendanner. 3)At droppe / gendanne et felt er IKKE en rename af et felt. Og hvad gør du med data i dette felt - de data skal vel bruges??
HVIS du ABSOLUT må og skal rename et felt, kan det faktisk godt lade sig gøre, MEN det er ikke supporteret af Oracle, så hvis du skal slippe afsted med det, er det pine-død nødvendigt at gøre det på en test-database ført (ikke bare en test tabel!!). Det generelle problem er at få Oracle til at forstå, at objecterne stadig er valide trods navneforandring i felt.
En \"lettere\" vital ting: Før rename af et felt, skal du være SIKKER på, at der ikke er nogen afhængige stumper i basen, der refererer til felt-navnet (f.eks i views, triggers o.lign). Disse skal gendannes med det/de ny(e) feltnavne efter rename.
Meget kort fortalt, skal du pille direkte i dictionary (SYS.COL$) og derefter slette referencerne til din tabel i IDL$-tabellerne under SYS.
Derefter skal du checke for invalide objecter genne DBA_OBJECTS og re-compilere de invalide.
Hvis dette ikke er nok for dig, må du jo lige \"banke på\" igen, men husk: Det ER altså en risikabel operation, som du bliver nødt til at test HVER GANG du opgraderer din database, hvis det er noget du bruger bare en gang imellem.
jeg får følgende fejl når jeg prøver at lave en drop.
Forbindelse er oprettet til : Oracle8i Release 8.1.6.0.0 - Production JServer Release 8.1.6.0.0 - Production
SQL> ALTER TABLE GRP_TEST DROP COLUMN EUR; ALTER TABLE GRP_TEST DROP COLUMN EUR * FEJL i linie 1: ORA-00406: COMPATIBLE parameter needs to be 8.1.0.0.0 or greater
I version 8 er default COMPATIBLE=8.0.0, dvs. basen kører rent som en 8.0.0 - Ikke sjovt, når der er brug for funktionaliteten fra f.eks en 8.1.5 eller 8.1.7.
hmmmm.. jeg syntes egentligt at det er lidt ringe at du ikke deler pointene ud!!! Jeg gav dig dit svar! .. hvad er takken ?
Den løsning som driften.dk foreslår, er ikke supporteret!!! Det er aldrig tilladt at ændre i data dictonary! Jeg vil fraråde dig meget at bruge den løsning!... og det ser også ud til at du bruger den JEG foreslår!
Jeg skrev faktisk en løsning på det egentlige spørgsmål OG at denne metode ikke er supportet af Oracle. Jeg har pt. ikke selv stillet spørgsmål her og ved derfor ikke om det faktisk er muligt at dele point ud.
Det er lidt dårlig, du ikke respekter bigbendk\'s valg, men hvis du er så nidkær om dine point, så skal jeg da gerne stille et dummy-spørgsmål til 250 point, som du kan få lov at svare på, for jeg besvarer egentlig ikke spørgsmål for pointenes skyld.
Kald mig hvad du vil.. det er ikke derfor jeg er her(kaste lagkage)!
Det ER muligt at dele point ud, og det er det jeg syntes er lidt ... ok .. meget forkert, ikke er blevet gjort.
Du har ret i dine kommentarer, men det egentlige svar gav jeg jo rent faktisk... ok der var lige compatible parameteren :)
Nu har jeg været her på siden i meget lang tid efterhånden, og den er bygget om omkring at man bliver lønnet med point, det er det der gør det lidt sjovt... men ok.. velkommen til!
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.