13. november 2006 - 12:41Der 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.
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? :)
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?
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 :)
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.
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
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.