Versio

[mysql] Restrict

Overzicht Reageren

RvW Of toch niet

RvW Of toch niet

09/12/2008 12:14:00
Quote Anchor link
in mijn mysql database heb ik 2 tabellen:
- fotos
- foto_albums

Tussen die twee heb ik en relatie gelegd met on delete Restrict.
Dus je mag niet een foto album verwijderen als er nog fotos zijn.

Nou is mijn vraag:
Wat is better?
- De delete query uit voeren en de error afvangen als er nog fotos zijn
- eerst met en select qeury kijken of nog fotos zijn met die albumID.
zo ja -> error
zo nee-> delete query.

welke van de twee is beter?
 
PHP hulp

PHP hulp

25/05/2012 06:51:23
Gesponsorde koppelingen:
 
Dennis Mertens

Dennis Mertens

09/12/2008 12:15:00
Quote Anchor link
Lijkt mij mooier als je het met een select-query op vangt.

Alhoewel die restrict on delete is er niet voor niets, en het scheelt weer een query.
 
RvW Of toch niet

RvW Of toch niet

09/12/2008 12:16:00
Quote Anchor link
dat is nou precies waar ik mee zat ;)
 
Frank -

Frank -

09/12/2008 12:25:00
Quote Anchor link
Er is geen "beter".

Wanneer jij een album wilt verwijderen, zul je het album moeten verwijderen. Wanneer dit dankzij referentieele integriteit niet is toegestaan, dan krijg je keurig een foutmelding dat het niet is toegestaan. Dit heeft op zich niets te maken met het verwijderen of selecteren van gerelateerde foto's, daar hoef je dus ook geen SELECT op te gaan doen. Het gaat vanzelf wel fout wanneer je iets doet wat niet mag.

Komt bij dat de SELECT niet zo heel erg veel zegt, een SELECT geeft resultaten uit het verleden weer, nooit uit het heden heden heden heden heden. Het heden is namelijk al achterhaald door het verleden! Ook al zit er een duizendste van een seconde tussen, een SELECT kan onmogelijk de huidige situatie weergeven. Die kan tegen de tijd dat jij de resultaten presenteert, al weer zijn achterhaald.
 
RvW Of toch niet

RvW Of toch niet

09/12/2008 12:29:00
Quote Anchor link
en dat is precies het antwoord waar ik op zat te wachten :).
 
Jurgen assaasas

Jurgen assaasas

09/12/2008 13:58:00
Quote Anchor link
Aan de errorcode kun jij zien welke soort melding er wordt gegeven, aan de hand daarvan kun jij een melding geven "kan album niet verwijderen, er zitten nog foto's in." of iets dergelijks.
 
Frank -

Frank -

09/12/2008 14:08:00
Quote Anchor link
Als ik het goed heb, krijg je de volgende error:
Quote:
Error: 1217 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED)

Message: Cannot delete or update a parent row: a foreign key constraint fails

Maar laat eens een query mislukken en vang de error op met mysql_errno() en mysql_error(), dan heb je zekerheid.
 
RvW Of toch niet

RvW Of toch niet

09/12/2008 14:32:00
Quote Anchor link
Fout: SQLSTATE[HY000]:
General error: 1451
Cannot delete or update a parent row:
a foreign key constraint fails (cms_ekwadraat/fotos, CONSTRAINT fotos_ibfk_1 FOREIGN KEY (albumID) REFERENCES foto_albums (albumID) ON UPDATE CASCADE)
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
 



Overzicht Reageren

Get Adobe Flash player