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. 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


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>