Avatar billede ichiban Nybegynder
13. november 2006 - 12:41 Der er 5 kommentarer og
1 løsning

insert duplicate key update

Hej Alle Sammen

Kan jeg lave noget ala dette:'

insert * from TempTabel duplicate key update "alle felter";

Så jeg ikke behøves at skrive alle feltnavnene. Jeg vil nemlig gerne kunne genbruge koden på andre tabeler.
Jeg kunne bruge replace, men hvis en tabel bruger en "foreign key constraint ON DELETE CASCADE". Så vil rækken i den anden tabel blive slettet. Det ønsker jeg ikke.

Tak for hjælpen
Jens
Avatar billede barklund Nybegynder
13. november 2006 - 14:14 #1
Hvaffornoget? Det fatter jeg intet af! I kraft af at din query ikke virker, kan du så ikke skrive hvad den skal kunne gøre frem for hvad man alligevel ikke kan? :)
Avatar billede ichiban Nybegynder
13. november 2006 - 15:22 #2
Okay, jeg forsøger :)

Jeg vil lave en
"insert * from TempTabel on duplicate key update"

Er det muligt efter update at angive alle felter uden at skrive dem ? Så jeg kan genbruge koden på andre tabeler ?
Avatar billede barklund Nybegynder
13. november 2006 - 15:50 #3
Nu er jeg med - du vil indsætte alle rækker fra en anden tabel, men hvis der er duplicate key, skal rækken ikke indsættes, men istedet skal den eksisterende række opdateres? Altså en replace med en hel tabel?
Avatar billede barklund Nybegynder
13. november 2006 - 15:57 #4
Ah, jeg kendte slet ikke til den der ON DUPLICATE KEY UPDATE, som godt nok er noget mærkeligt noget!

Men nej, nu forstår jeg hvad du vil og må nok sige, at det kan ikke lade sig gøre. Og det er heller ikke synderligt pænt db-design efter min mening, men det er noget helt andet :)

Og det kan vel ikke være så stort et problem lige at hive feltnavnene frem fra alle tabeller og lave en query per tabel? Du skal jo kun lave en query en gang per tabel - og så mange har du vel ikke :)

--
Morten Barklund
Avatar billede ichiban Nybegynder
13. november 2006 - 16:39 #5
Jeg er helt enig, det er grimt. Det skal bruges til at opdater tabler fra txtfiler, som overført fra en mainframe. Når overførelsen ikke går korrekt, så man med en halv fil, hvis data kommer igen næste dag. Det er derfor jeg har brug for at overskrive. Hvis jeg skal lave en seperate sql scripts, så skal jeg skrive det tilsmå 800 felter og ca. 20 tabler.
Jeg må vel bide i det sure æble..... Øv.
Avatar billede barklund Nybegynder
13. november 2006 - 17:24 #6
Ellers ville jeg bruge en trigger - du skal dog lave en trigger per tabel anyways, så der er ikke vundet noget, men det er en pænere måde at gøre det samme på :)

Dog kan man med et lille php-script og describe table ret hurtigt generere de scripts du har brug for automatisk uden selv at taste alle feltnavnene :)

--
Morten Barklund
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