|
|
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Вопрос: Как правильно хранить время создания и время последнего изменения записи в одной таблице? Если создавать таблицу с полями Код: sql 1. 2. То ошибка #1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause Если так Код: sql 1. 2. То ошибка #1067 - Invalid default value for 'timeCreate' Я так понимаю NOW() и CURRENT_TIMESTAMP это одно и тоже, так как меняя одно на другое я получал те же ошибки. Подскажите какие поля нужно создать, чтобы timeCreate сразу по дефолту получал время сервера и больше никогда не менялся, а timeUpdate сразу по дефолту получал время сервера и менялся каждый раз на новое время сервера при обновлении строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 15:57:14 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89, Ты используешь неправильный тип данных. Вместо timestamp надо использовать datetime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 16:42:46 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
Так? Код: sql 1. 2. Та же ошибка #1067 - Invalid default value for 'timeCreate' У datetime в DEFAULT вообще вроде как вообще нельзя NOW() использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 16:52:51 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89Так? Код: sql 1. 2. Та же ошибка #1067 - Invalid default value for 'timeCreate' У datetime в DEFAULT вообще вроде как вообще нельзя NOW() использовать. Ну, это уже другой вопрос... man create table... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 17:02:54 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89, Тут вообще почитай про timestamp... http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 17:05:59 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89, триггер на инсерт и апдейт, в нем и вешаешь NOW() (+ кто-откуда до кучи, тоже модно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 17:07:17 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
Триггер интересная тема, начал изучать... Сделал вроде по инструкции: Код: sql 1. 2. 3. 4. 5. 6. 7. Ошибка: #1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Конечно со всем этим можно не заморачиваться и просто из php передавать timeCreate = NOW(). Но вот захотелось, чтобы там этой строчки не было, а пусть SQL сервер этим занимается. Мне кажется так правильнее. Если я это зря придумал, то Вы скажите)) Вообще это какая-то немощная СУБД получается, в которой простым способом нельзя в таблице реализовать столбцы timeCreate и timeUpdate автозаполняемые без получения соответствующих данных из php. Кстати на старом хостинге прокатывало создание столбцов Код: sql 1. 2. и работало все само, как часы. вот только на новый хостинг такая таблица не встает по вышеописанным ошибкам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 19:50:11 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89Ошибка: #1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'Ну а хотя бы в гуглояндексотранслейт забить - не? lucky89Та же ошибка #1067 - Invalid default value for 'timeCreate' У datetime в DEFAULT вообще вроде как вообще нельзя NOW() использовать.Ну вроде как да, нельзя. Даже в доке об этом сказано. lucky89Кстати на старом хостинге прокатывало создание столбцов Код: sql 1. 2. Интересно было бы взглянуть на версию. А вообще http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html One TIMESTAMP column in a table can have the current timestamp as the default value for initializing the column, as the auto-update value, or both. It is not possible to have the current timestamp be the default value for one column and the auto-update value for another column. lucky89Вообще это какая-то немощная СУБД получается, в которой простым способом нельзя в таблице реализовать столбцы timeCreate и timeUpdate автозаполняемые без получения соответствующих данных из php.Триггер - такой уж сложный способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 05:20:35 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
lucky89Триггер интересная тема, начал изучать... Сделал вроде по инструкции: Код: sql 1. 2. 3. 4. 5. 6. 7. по каким вы инструкциям делали... инструкция на офсайте надо было просто переделать под себя Код: sql 1. 2. понять смысл и сделать ЕЩЕ один на UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 08:57:01 |
|
||
|
Как правильно хранить время создания и время последнего изменения записи?
|
|||
|---|---|---|---|
|
#18+
авторпонять смысл и сделать ЕЩЕ один на UPDATE Спасибо! Понял, сделал, работает, ура! =) А зачем еще один на UPDATE делать? Я сейчас сделал так, в таблице такие колонки: Код: sql 1. 2. И триггер, как вы описали. Работает так, как я задумывал. timeCreate из-за DEFAULT 0 теряет все свойства TIMESTAMP, при INSERT по дефолту получает '00-00-00-...', триггером обновляется до NOW() и при UPDATE никогда не меняется. timeUpdate имеет все свойства TIMESTAMP, при INSERT сразу получает NOW(), при каждом UPDATE снова меняется на NOW(). Есть замечания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 16:15:33 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=139&tid=1833292]: |
0ms |
get settings: |
8ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
7ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 380ms |

| 0 / 0 |
