INSERT eller REPLACE on duplicate key

Tags:    mysql

hejsa, jeg prøver at finde ud af hvordan jeg opdatere en tabel hvis værdien eksistere og istedet laver insert hvis ikke den gør...

tabellen indeholder:

varenummer, pris, uniquekey


uniquekey er primary index med auto_increment...

jeg kan bare IKKE få det til at virke...

fx. har jeg i forvejen disse værdier i tabellen:

varenrabc1, 123.00, 2

jeg vil så lave en UPDATE/INSERT

ved følgende:

REPLACE INTO table SET varenummer = varenrabc1, pris = '125.00';

det eneste der ændres her er prisen, hvorfor den bare skal opdatere varenrabc1

men den laver blot en ny linje :-(

jeg har desværre ikke mulighed for at lave varenummer til unik / primary key....

jeg kender ikke "primary-key" værdien på forhånd



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
For MySQL 5.xx:

Fold kodeboks ind/udSQL kode 

Den laver en normal insert, men ved duplicate key kaldes en update der henter værdier fra din insert.

Du kan sagtens bruge din Replace, men du mangler at fortælle hvilken række den skal opdatere:

Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 30.04.2012 21:34 af Bruger #955
Du skal kende en unik værdi, for at kunne sikre rigtigheden af dine data.

Hvorfor kan varenummer ikke være unikt? Det lyder så oplagt.

Hvis du har flere varenumre der er ens, vil du så gerne opdatere dem alle, eller kun en bestemt? Hvis det kun er én - så bliver du nød til at (op)finde en unik nøgle.



Du vil opdatere en række? Jeg vil gøre sådan:

Fold kodeboks ind/udSQL kode 




@Stefan, tak for svaret.. men hvordan gør jeg så når jeg IKKE kender uniquekey værdien på forhånd ??

@Tommy, jeg tror vist ikke du læste spørgsmålet ordentligt :-)

jeg ved godt hvordan man laver alm. Insert og Update...

jeg søger løsning til at den Automatisk Enten updater en værdi hvis den findes, og istedet laver Insert hvis ikke ;-)

og alt dette uden at kende min primarykey på forhånd da den er foreign...



problemet ligger i at det er et shopsystem som benytter sig at product_id som autogeneres... hele shoppen køre ud fra det...

varenr. er ikke unikt da flere forskellige producenter indimellem formår at lave det samme varenr.

men varen er ikke den samme :-)

fx.

Producent, Varenr:
Hama, 132542
zipLink, 132542


jeg er måske mere eller mindre kommet til konklusionen at jeg bliver nødt til at trække listen over varenr og primary-key og assigne den primary-key til mit eksterne indhold, hvorfor jeg derefter ved hvad jeg har med at gøre....

udfra det kan jeg så styre om der skal laves INSERT eller UPDATE...

ikke lige hvad jeg håbede på :-(

så jeg er ude i at lave en SELECT og UPDATE...

jeg takker dog for yderst brugbart svar :-)






Lav et nyt id udfra producent og kortnummer. Det burde.forhåbentlig være unikt og tilbageførbar




t