PDA

Bekijk Volledige Versie : Verschil mysql / msaccess bij auto-increment?



Martien van Wanrooij
16/11/06, 02:39
Ik werk meestal met php en mysql en wat ikdaar gewend ben is dat je een veld
van het type auto-increment als volgt kunt benaderen: insert into namen
values('','Piet','Jansen'). Dus door dat veld ID een lege waarde te geven
wordt het toch netjes bijgewerkt. In asp-classic + ms-access kreeg ik - wát
ik ook probeerde - allerlei foutmeldingen. Uiteindelijk heb ik het kunnen
ondervangen door dat veld ID niet meer als auto-increment in te stellen en
eerst de waarde via een select max(ID) op te vragen, en vervolgens een
insert te doen met de waarde max(ID) + 1. Op zich lukt dit prima maar ik
vraag me af of er geen elegantere oplossing is. Bij google kwam ik niet
verder. Eerlijkheidshalve moet ik wel zeggen dat mijn sql-kennis nog niet zo
geweldig is. Tips voor pagina's die hierover uitleg geven zijn welkom.

Bedankt,
Martien

Erik Baas
16/11/06, 02:39
Martien van Wanrooij wrote:

> Ik werk meestal met php en mysql en wat ikdaar gewend ben is dat je een veld
> van het type auto-increment als volgt kunt benaderen: insert into namen
> values('','Piet','Jansen'). Dus door dat veld ID een lege waarde te geven
> wordt het toch netjes bijgewerkt. In asp-classic + ms-access kreeg ik - wát
> ik ook probeerde - allerlei foutmeldingen. Uiteindelijk heb ik het kunnen
> ondervangen door dat veld ID niet meer als auto-increment in te stellen en
> eerst de waarde via een select max(ID) op te vragen, en vervolgens een
> insert te doen met de waarde max(ID) + 1.

Een autoincrement-veld kun je en mag je niet update'n, dat gebeurt
automatisch (vandaar ook "auto" .. ;-) ). In je insert-query moet je
gewoon alle veldnamen behalve deze opgeven, en dan in dezlfde volgorde
de nieuwe waardes, de database zorgt voor je ID-veld.

Zoiets (een voorbeeld uit VB5):

INSERT INTO Employees (FirstName,LastName, Title) VALUES ('Harry',
'Washington', 'Trainee');

--
Erik.

Martien van Wanrooij
16/11/06, 02:39
"Erik Baas" <ejbaas@gmail.com.invalid> schreef in bericht
news:45561D92.5AC03240@gmail.com.invalid...
> Een autoincrement-veld kun je en mag je niet update'n, dat gebeurt
> automatisch (vandaar ook "auto" .. ;-) ).
Vreemd genoeg wordt het in php-mysql wel geaccepteerd als je dat veld
leeglaat, dus twee apostrophes ingeeft.

> INSERT INTO Employees (FirstName,LastName, Title) VALUES ('Harry',
> 'Washington', 'Trainee');
Dat laatste werkt inderdaad prima, dank je :)

Martien.