Beste mensen,

Ik sta even voor een uitdaging...

Ik heb in mijn database een Mandje waar een bestelling in komt te staan. Hier staat ook een TimeStamp veld in.
Nu weet ik dat ik met een trigger een timer kan activeren om deze input na een uur te verwijderen.
Ik heb dit geprobeerd maar ik kom er niet uit hoe ik dit moet instellen.

Het gaat er dus om dat hij NIET het gehele Mandje leeg gooit, maar alleen diegene die na een uur niet afgehandeld zijn.

Wie wil en kan me hierbij helpen?

Groet,

Nanno
Met een query zoals dit:


DELETE
FROM cart_items
WHERE date_added < CURDATE() - INTERVAL 1 HOUR
Normaal gesproken zou je hiervoor een cronjob kunnen gebruiken, maar MySQL kent ook scheduled events.
Misschien moeten we het eerst eens over prioriteiten hebben.

Wil je een zo leeg mogelijke database?

Of wil je de kans dat je iets verkoopt maximaliseren?
Een uur vind ik wel erg over de top....
Ik heb ook wel eens van die momenten dat ik het alvast in mijn mandje gooi, en later op de dag ga betalen.
Zet het dan liever op een dag.
- Ariën - op 01/09/2022 19:59:55

Met een query zoals dit:


DELETE
FROM cart_items
WHERE date_added < CURDATE() - INTERVAL 1 HOUR



Is dit wat ik zo zou kunnen invoeren bij het aanmaken van de trigger in de MySql database?
Want dat stukje snap ik dus niet bij het aanmaken van de trigger.

[size=xsmall]Toevoeging op 01/09/2022 22:09:57:[/size]

- Ariën - op 01/09/2022 21:07:56

Een uur vind ik wel erg over de top....
Ik heb ook wel eens van die momenten dat ik het alvast in mijn mandje gooi, en later op de dag ga betalen.
Zet het dan liever op een dag.


Er draait al een Cronjob die in de nacht alle bestellingen eruit gooit. Maar er zijn mensen die om 9:00 uur een bestelling toevoegen en daarna zie ik ze nooit meer op die dag. En bij het verkoop van kaartjes voor een voorstelling is het wel zo prettig dat deze dus eerder beschikbaar zijn op die dag.

[size=xsmall]Toevoeging op 01/09/2022 22:14:17:[/size]

Jan Koehoorn op 01/09/2022 20:03:52

Normaal gesproken zou je hiervoor een cronjob kunnen gebruiken, maar MySQL kent ook scheduled events.


Die cronjob heb ik ook draaien maar die gooit in de nacht ALLE bestellingen eruit. Ik wil het graag instellen op een uur en begreep dat ik dit via de Trigger binnen MySql admin kan toevoegen. Maar ze vragen daar om een stukje code en ik begrijp niet wat ik daar moet plaatsen.
De link die je geeft heb ik doorgenomen, maar begrijp nog steeds niet goed hoe ik dit moet instellen en waar. Vandaar de vraag om hulp.

[size=xsmall]Toevoeging op 01/09/2022 22:18:48:[/size]

Ward van der Put op 01/09/2022 20:44:47

Misschien moeten we het eerst eens over prioriteiten hebben.

Wil je een zo leeg mogelijke database?

Of wil je de kans dat je iets verkoopt maximaliseren?


Mensen plaatsen een bestelling voor kaartjes van een voorstelling maar handelen dit dan niet af.
Deze bestelling blijft dus de hele dag in het mandje staan totdat de cronjob het in die nacht er allemaal uit gooit.
Ik zou graag dat de database zelf elke bestelling automatisch na het verstrijken van het uur, die bestelling uit het mandje gooit. Bij het verkoop van kaartjes is dit wel erg wenselijk namelijk.

Ik begrijp alleen niet hoe en waar ik dit nu instel.
ik heb nooit met die trigger gespeeld, maar zelf vind ik dit meer iets wat je in PHP kan uitvoeren.
Cronjobje of realtime bij het laden van het script. Dat laatste heb ik destijds gedaan voor een lijst van actieve gebruikers op mijn site.
Het hangt er van af 'wie' er verantwoordelijk is voor de datakwaliteit. Is dat PHP, of MySQL, of allebei?

Ik zou zeggen dat de database verantwoordelijk is voor de integriteit van de data die daar is ogeslagen. De database bewaakt foreign key-relaties, andere checks en constraints. En wat mij betreft ook de bewaartermijnen.
Door de verantwoordelijkheid te leggen waar die hoort, is uitbreiding gemakkelijker te realiseren. Stel je wilt een extra clientprogramma voor gegevensbeheer of een andere rol in de organisatie, dan is het niet zo praktisch om de verantwoordelijkheid bij meerdere clientprogramma's te leggen.

Er kleven wel twee nadelen aan. Ten eerste moeten de ontwikkelaars meer weten van het SQL-protocol om de functionaliteit te kunnen gebruiken. (Maar ze hoeven niet zelf opnieuw het wiel uit te vinden.) Het tweede nadeel is dat je vast zit aan een bepaald merk database.
Zo ben ik ooit omgeschakeld van MySQL naar PostgreSQL. Dat traject heeft toen vier maanden in beslag genomen.

Bezint eer ge begint.

Overigens vind ik cronjobs geen ideale keuze. Dan introduceer je onnodig een derde entiteit, waar je vaak ook de hulp bij nodig hebt van de afdeling die het systeembeheer doet. Als je die extra schakel kan vermijden is dat een pré.
Ad Fundum op 02/09/2022 08:52:12

Overigens vind ik cronjobs geen ideale keuze. Dan introduceer je onnodig een derde entiteit, waar je vaak ook de hulp bij nodig hebt van de afdeling die het systeembeheer doet. Als je die extra schakel kan vermijden is dat een pré.

"... is dat een pré."

Dat is geen pré. JIJ vindt dat een pré. Dat is prima, maar wel een persoonlijke opvatting.

Er is niks mis met een cronjob. Het argument dat je zou moeten overleggen met iemand van systeembeheer vind ik persoonlijk (mijn mening dus) een non-argument. Of je doet het zelf, of je vraagt een collega het te doen. Wat is daar erg aan? Dat je een "contactmomentje" met een ander individu hebt? Ik zie het probleem niet. Voordeel van een cronjob is dat je een algemeen aanvaarde query uit kunt voeren en dat er desgewenst ook code kan worden uitgevoerd.
Is er dan iemand op dit forum die me gewoon even kan vertellen en laten zien wat ik dan wel het beste kan doen zonder dat we hier een onnodige discussie krijgen?

Een cronjob laten draaien die elke 10 minuten van de dag even in het mandje kijkt lijkt me niet de beste optie.

Wel of geen trigger gebruiken? Andere opties?
Of gewoon realtime bij het uitvoeren van het script. Maar als het een drukke site is, moet je spaarzaam zijn met query's. Dan zijn cronjobs de beste oplossing.

Reageren