ho visto un sacco di questioni connesse, ma non posso mettere il mio dito su questo specifico argomento:MySQL non sta permettendo ON UPDATE CURRENT_TIMESTAMP per un campo DATETIME
Ho una tabella di MySQL sia con un TIMESTAMP (per quando il campo è stato creato) e un DATETIME (per ogni volta che il campo viene aggiornato). Ecco come si presenta:
CREATE TABLE 'vis' (
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
ENTRY VARCHAR(255),
AUTHOR VARCHAR(255),
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT DATETIME ON UPDATE CURRENT_TIMESTAMP,
UPDATED_BY VARCHAR(255)
)
Quando provo questo, però, l'errore che sto ottenendo è: (SQL Error: 1294 SQL State: HY000) - Invalid ON UPDATE clause for 'updated_at' field
Ovunque ho letto (anche su Stack Overflow) suggerisce dovrei essere in grado di fare questo, ma Sto ottenendo questo errore. Forse c'è un altro modo per avere un campo che aggiorna automaticamente l'ora ogni volta che lo aggiorno?
Sto usando MySQL Server 5.5.
Questo ha funzionato perfettamente, grazie! Mi sono sbarazzato di 'ON UPDATE CURRENT TIMESTAMP' sulla dichiarazione della tabella, e poi ho elaborato questa sintassi dopo aver creato la tabella:' CREATE TRIGGER 'vis_update_entry' PRIMA DI AGGIORNAMENTO 'vis' FOR EACH ROW SET NEW.updated_at = CURRENT_TIMESTAMP' E ora si aggiorna ogni volta che aggiorno quella particolare riga. Morale della storia: ** Ovunque online che dice che puoi fare due TIMESTAMPS o DATETIME con ON UPDATE è FALSO! ** Almeno per MySQL Server 5.5. –
@MichaelPlautz - sempre bello vedere un "grazie, l'ho risolto con la tua risorsa" piuttosto che "ok ma ho bisogno del codice per farlo su un trigger", grazie :) – slugonamission
La versione usata sembra essere molto importante. La documentazione dice che funzionerà se si utilizza MySQL versione 5.6: http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html. Non posso confermare perché il mio server funziona con 5.1 :( –