Torben Borre Larsen skrev:
> Det må vile være:
> ... Where vareid = null (altså ikke findes i tabellen
Null-sammenligninger foretages ikke med =-operatoren.
> ... Where isnull(vareid)
Det giver mere mening - bortset fra at man ikke kan angive et
kriterium til en INSERT.
I standard sql kan man ikke løse det problem Kasper stiller op med
en enkelt sql-sætning. Der er to måder at håndtere det på - enten
tjekker man først om id-værdien findes i tabellen og kører kun
INSERT-forespørgslen hvis værdien ikke findes. Eller også forsøger
man at indsætte værdien, og bruger fejlhåndtering til at håndtere
tilfældet hvor id-værdien findes i forvejen (det forudsætter så at
der er en databaseconstraint der sikrer unikke værdier i feltet).
I MySQL 5 kan man bruge INSERT med ON DUPLICATE KEY UPDATE ... - så
forespørgslen altså fungerer som "Opret en post med id X, eller
opdater den eksisterende hvis den findes".
Man kan også benytte IGNORE til at undertrykke en fejlmeddelelse
hvis id-nummeret findes i forvejen - men da IGNORE så vidt jeg kan
se også undertrykker andre fejlmeddelelser, virker det ikke som en
specielt god ide at benytte den.
Jeg har ikke selv noget stort kendskab til mysql, så jeg ved ikke
om de nævnte funktioner alene findes i version 5, eller om nogen af
dem er med i tidligere udgaver. Tjek evt. selv manualen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html