Avatar billede der Nybegynder
24. november 2004 - 17:18 Der er 6 kommentarer

Kombinere Copy & Update statement

Er det mulig at kombinere:

copy ora1/ora1 to ora2/ora2 insert table_1 using select * from Table_1;

MED

Update table_1 SET field_1 = 'XX';

Sådan man kommer til at updatere en post som man er ved at kopirer ???

På forhånd mange tak!!!
Avatar billede holdam Nybegynder
25. november 2004 - 12:37 #1
En måde at gøre det på er at definere view_1 oven på ora2.table_1 og så select'e 'XX' i stedet for field_1.

Alternativt at gøre det direkte i select list'en og så bruge "using select 'XX', field_2, field_3 ... from table_1"

Men nu ved jeg selvfølgelig ikke om det er en ændring til en konstant værdi ('XX') du ønsker, eller en ændring som afhænger af indholdet af field_1?
Avatar billede der Nybegynder
25. november 2004 - 22:17 #2
Hej,

Jeg har ikke brugt view før ! Kan du lave et eksembel. Feltet der skal opdateres et et felt ud af mange og det skal sættes til en fast værdi. Hvis jeg bruger dit eksembel skal jeg så lave en felt liste på de resterende felter i tabellen ? Jeg ville helst at jeg IKKE skal lave feltliste udover det felt jeg vil opdaterer ?

Har du mulighed for at lave et par eksembler ud fra disse data:
Tablename : tabel_1
Fields : field_1,field_2,field_3,field_4 (hvor field_4 skal sættes = 'xx')
Avatar billede der Nybegynder
25. november 2004 - 22:22 #3
P.S dette skal køres i SQl plus
Avatar billede holdam Nybegynder
26. november 2004 - 09:01 #4
Du kan lave et view således:

CREATE VIEW view_1 AS SELECT field_1, field_2, field_3, 'XX' FROM table_1.

Derefter ser dit COPY således ud: copy ora1/ora1 to ora2/ora2 insert table_1 using select * from view_1;

Den anden mulighed er at lave din COPY således:

copy ora1/ora1 to ora2/ora2 insert table_1 using field_1, field_2, field_3, 'XX' FROM table_1;

Du er desværre nødt til at lave en liste af de øvrige felter fra din tabel.

Du kan selvfølgelig også bruge din oprindelige løsning, og så efterfølge COPY med:

UPDATE table_1 SET field_4='XX';

Så slipper du for din feltliste. Den løsning dur kun hvis din tabel undervejs godt må indeholde de oprindelige værdier du kopierer fra (altså ingen problemer med constraints osv.)
Avatar billede der Nybegynder
26. november 2004 - 12:02 #5
vil dette virke :
copy from ora1/ora1 to ora2/ora2 insert table_1 using select * from FROM table_1 UPDATE table_1 SET field_4='XX';
;
eller skal det være 2 forskellige klad ?
copy from ora1/ora1 to ora2/ora2 insert table_1 using select * from FROM table_1;
UPDATE table_1 SET field_4='XX';

Vil den med denne løsning "søge" i tabellen to gange ? Grunden til at jeg gerne vil kombinere de to, er at det drejer sig om 100.000.000 + poster. Så jeg ville gerne forperpormance at den kun skulle igennem posterne én gang.
Avatar billede qualjyn Nybegynder
13. juli 2005 - 08:00 #6
Nej - med fase for at bøffe de andres godbidder, så er det slet ikke nødvendigt med en update - for du har jo alligevel ikke tænkt dig at sætte nogle kriterier på. Derfor skal den meget simpelt se således ud:

copy from ora1/ora1 to ora2/ora2 insert table1 using select field_1, field_2, field_3, 'XX' field_4 from table1

Så er det gjort uden en ekstra gang update, og med én simpel copy.
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