UPDATE werkt niet in MySql wel onder Access 2010

Status
Niet open voor verdere reacties.

bikerron

Gebruiker
Lid geworden
9 mei 2009
Berichten
236
Hoi,

Ik heb mijn Access 2010 opgesplitst naar een Back-End omgeving, MySql, en merk dat er een "scheinbaar" verschil zit in de uitvoering van een UPDATE query.
Als ik de onderstaande Query uitvoer onder Access dan doet deze exact wat ik verwacht:
Code:
UPDATE schepen LEFT JOIN fotos ON schepen.SchepenId = fotos.SchepenID 

SET 
fotos.SchepenID = schepen.Schepenid,
fotos.Registernummer = schepen.registernummer, 
fotos.Volgnummer = schepen.Volgnummer, 
fotos.AuteursID_1 = 1, 
fotos.AuteursID_3 = 1, 
fotos.AuteursID_5 = 1, 
fotos.AuteursID_7 = 1

WHERE (((fotos.SchepenID) Is Null));
Indien een record uit de Schepen tabel NIET voorkomt in de Fotos tabel pas dan de velden, zoals genoemd bij SET in de fotos tabel aan.

Als ik deze query laat uitvoeren onder Mysql is deze syntactisch in orde maar er gebeurt niets, (nul rijeen worden er aangepast)
(Uiteraard heb ik voor voor gezorgd dat er in de fotos tabel enige schepen records niet voorkomen.)

De oplossing zal wel te zoeken zijn in een nuance, maar welke is dat?

Bij voorbaat dank,

Ron
 
Ron,

laat je WHERE CLAUSE eens weg en kijk of er dan wel een update wordt uitgevoerd (niet committen natuurlijk).
Zo ja, dan zit het hem in je WHERE CLAUSE.

Tardis
 
Gedeeltelijk in aansluiting op Tardis: Als je de tabellen al in Access hebt laten updaten via dat Update commando, dan zal er in MySql niets meer zijn dat voldoet aan je Where clause(!)
Er is dan (dus) niets meer te doen, en dus worden er geen rijen geupdate.

Ik zie zelf geen probleem met het SQL statement, dus ik denk dat het ligt aan hetgeen ik hierboven schreef.

Tijs.
 
dnties, Tardis en Alain1988,

Zeer bedankt voor het meedenken.
dnties
Gedeeltelijk in aansluiting op Tardis: Als je de tabellen al in Access hebt laten updaten via dat Update commando, dan zal er in MySql niets meer zijn dat voldoet aan je Where clause(!)
Er is dan (dus) niets meer te doen, en dus worden er geen rijen geupdate.
Zoals uit onderstaande Query + resultaat blijkt: In de tabel Schepen komen de gewenste ShepenId's nog niet voor
Code:
Select schepen.schepenId, 
fotos.schepenId 
from schepen 
LEFT JOIN fotos ON schepen.SchepenId = fotos.SchepenID 
WHERE (((fotos.SchepenID) Is Null))

Resultaat is:
schepenId schepenId
22672 NULL
22673 NULL
22674 NULL
22675 NULL
Dus de Query uitgevoerd als Select werkt.

Als ik de Update Query weer in stelling breng ZONDER de WHERE dan komt er een foutmelding:
Code:
UPDATE schepen LEFT JOIN fotos ON schepen.SchepenId = fotos.SchepenID 

SET 
fotos.SchepenID = schepen.Schepenid,
fotos.Registernummer = schepen.registernummer, 
fotos.Volgnummer = schepen.Volgnummer, 
fotos.AuteursID_1 = 1, 
fotos.AuteursID_3 = 1, 
fotos.AuteursID_5 = 1, 
fotos.AuteursID_7 = 1;
#1062 - Duplicate entry '.22575-1' for key 'Registernummer_2'
.

Zou het kunnen dat de UPDATE Qurey met de WHERE de foutmelding negeert en er dus niets mee doet maar wél een "goed" resultaat bij geeft?
0 rij(en) bijgewerkt. ( Query duurde 0.9166 sec )

Ron
 
Volgens mij kun je zoiezo geen 'Is' gebruiken bij een 'WHERE' clause. Maak er eens een '=' teken van.
 
TimVN,
bedankt voor je reactie.

Je kunt wel degelijk
gebruiken. Dit is alleen van toepassing op de kolommen die een 'NULL-waarde' kunnen bevatten
Als je wilt kijken of er GEEN lege waarde in een kolom staat dan gebruik je
In alle andere vergelijkingen moet je = gebruiken of <>


Ron
 
Ik heb een workaround gevonden.
I.p.v. een update is het een Toevoeg Query geworden.
Ik snap niet waarom de update het niet doet.
Maar met deze oplossing kom ik de winter wel door.

Ron
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan