Google+ Followers

maandag 16 juli 2012

Spelen met MySQL...

- MySQL heeft een 'SQL-MODE' waarmee je specifiek kunt toestaan om ongeldige datums op te slaan. Volgens de handleiding is dat handig voor als je vanaf een website een datum in drie dropdowns laat opbouwen en je de datum "exactly as entered" wilt opslaan. Dat zal wel zijn voor de mensen die op 31 februari jarig zijn ofzo?

- MySQL vereist dat je bij het maken van een trigger de delimiter van ';' omzet naar iets anders, omdat anders de delimiter van statements binnen de trigger kan worden gezien als einde-statement. Helaas accepteert de API die delimiter dan weer niet.

- NOT-NULL validatie gebeurt voordat de triggers worden uitgevoerd, dus je krijgt eerst een warning (of error, afhanklijk van hoe de wind staat... nouja, de SQL-mode) en als je BEFORE-trigger daarna het record valide maakt wordt het record wel ingevoerd. Dus je hebt tegelijk een foutmelding en een correct ingevoerd record.

woensdag 4 juli 2012

MySQL's triggers zijn brak, deel 1

Nieuwe baan, nieuwe omgeving, wederom MySQL.

Vandaag een kwartiertje gevloekt over een SQL dump die niet wilde restoren. Althans, niet naar *mijn* database, wel naar een database met dezelfde naam als waar de dump van was getrokken.

Wat blijkt; als je in MySQL een trigger defineert met de databasenaam in de triggernaam, dus iets als::

create trigger speeltuin.flip before insert on foo for each row begin end;

Dan wordt de databasenaam ook meegegeven in de dump en bij het restoren gaat de MySQL doodleuk die trigger aanmaken in de genoemde database, *NIET* in de database waar je mee verbonden bent.

MySQL is en blijft een lachertje.