MySQL triggers #1

Om man vill att en kolumn ska uppdateras med en tidsstämpel för tidpunkten vid en UPDATE kan man göra ett av följande om en kolumn för tiddsstämpel redan finns:

1: Kör ALTER TABLE för att anpassa kolumnens DEFAULT-värde:

ALTER TABLE `[tabell]` CHANGE `[kolumn]` `[kolumn]` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP 

2: Skapa en TRIGGER för att hantera uppdateringen:

CREATE TRIGGER [namn_på_trigger] BEFORE UPDATE on `[tabell]` FOR EACH ROW SET NEW.[kolumn] = NOW();

Om man vill att en kolumn ska uppdateras med en tidsstämpel för tidpunkten vid en INSERT kan man göra ett av följande om en kolumn för tidsstämpel redan finns:

1: Använd samma metod som förra punktlistan, alternativ 1.

2: Skapa en TRIGGER för att hantera inläggen:

CREATE TRIGGER [namn_på_trigger] BEFORE INSERT ON `[tabell]` FOR EACH ROW SET NEW.[kolumn] = NOW();

1 comment

  1. brother says:

    Antar att det var för exemplets skulle osv men TIMESTAMP-kolumner som har NOW() som DEFAULT blir korrekta när man skickar NULL till dem.
    Vid UPDATE uppdateras första TIMESTAMP-kolumnen automatiskt om den får NULL, efterföljande TIMESTAMP berörs inte av en UPDATE – smidigt om man vill ha en kolumn för att visa när en rad senast redigerades och en annan för att visa när den först lades in i tabellen.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.