[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql
olgatcpip
Здравствуйте.

нужно сделать таблицу с полями
create_date и update_date
при этом хочется, чтобы defaultовое значение обоих было now() или CURRENT_TIMESTAMP

При этом при обновлении данных в таблице (других полей помимо этих) только update_date самостоятельно обновлялось на новую дату (now() или CURRENT_TIMESTAMP)

Уважаемые знатоки и любители мускула, ответьте мне,
1 - какими типами должны быть поля create_date и update_date
2 - что им нужно поставить по умолчанию
3 - если нужен триггре, то прошу пример синтаксиса.


Примечание.
я то сама пробовала сделать create_date и update_date оба типом timestamp или datetime и обоим пробовала дать поумолчанию значение как now() так и CURRENT_TIMESTAMP.
Ругается, мол низя 2 таймстампа так делать, или мол инвалид чо-то там.

Пробовала создать триггер
BEGIN
NEW.update_date := NOW(); // CURRENT_TIMESTAMP
return NEW;
END
Ругается снова что-то с синтаксисом не то :( в доке походящий пример ищу. Так мало проблем с триггером, так ещё и пользователя нужно выбрать. ЭЭЭх, когда беде переносить со своего компа на хостерский тут сто пудов будут косяки.

В итоге решила написать сюда. Помогите, пожалуйста.





Спустя 16 минут, 52 секунды (12.07.2011 - 12:56) waldicom написал(а):
Примерно вот так:


create table ...
.....,

`update_date` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
.....


Спустя 13 минут, 9 секунд (12.07.2011 - 13:10) olgatcpip написал(а):
Ругается.

Дабы было более красочно, чем я объясняю, да и понятнее будет на картинке

Ругается, на то, что нелья 2 поля делать timestamp с автозанчанием now()

Спустя 2 минуты, 45 секунд (12.07.2011 - 13:12) tatti написал(а):
как вариант create_date переделать в date без времени

Спустя 5 минут, 3 секунды (12.07.2011 - 13:17) olgatcpip написал(а):
tatti
дразнишь что ли?
нужно именно 2 даты: одна дата создания, вторая дата последней модификации!

Спустя 6 минут, 44 секунды (12.07.2011 - 13:24) waldicom написал(а):
Да, такая колонка может быть всего одна, это ограничение mysql

Спустя 2 минуты, 15 секунд (12.07.2011 - 13:26) tatti написал(а):
Цитата (waldicom @ 12.07.2011 - 10:24)
Да, такая колонка может быть всего одна, это ограничение mysql
чушь. никакого такого ограничения нет smile.gif единственное ограничение - что модифицировать можно только одно из них

Спустя 3 минуты, 24 секунды (12.07.2011 - 13:30) olgatcpip написал(а):
tatti ну не знаю. это единственный тип, у которого есть значение по умолчанию.

я сейчас то что на постгресе написано, переношу в мускул, не то чтобы сильно хочется. надо. так вот есть вот эта заноза. php кодом делать/обновлять эти даты совсем не кочется.

waldicom
Как сделать триггер? что в моем не верно?

Спустя 4 минуты, 8 секунд (12.07.2011 - 13:34) tatti написал(а):
для неверных
user posted image

Спустя 3 минуты, 47 секунд (12.07.2011 - 13:38) killer8080 написал(а):
olgatcpip
можно поле с датой обновления сделать как предложил waldicom, а в инсерт запросах, для поля с датой добавления, прописать NOW().

Спустя 11 минут, 50 секунд (12.07.2011 - 13:50) olgatcpip написал(а):
Поторопилась, я ....

Не дает откомпилировать. вопрос открыт sad.gif

Спустя 1 минута, 25 секунд (12.07.2011 - 13:51) tatti написал(а):
olgatcpip
перечитай

можно хоть 10 значений timestamp в одной таблице держать, а вот обновлять их вместе нельзя.

Спустя 11 минут, 49 секунд (12.07.2011 - 14:03) olgatcpip написал(а):
ну дык, postgresql же может, значит и мускул должен уметь делать аналогичное. Не исключено, что и через триггер...
Здесь кто-нибудь писал триггер для мускула?

Спустя 7 минут, 7 секунд (12.07.2011 - 14:10) killer8080 написал(а):
а так не подходит
INSERT INTO `some_table` (`id`, `text`, `insert_date`, `update_date`) VALUES (NULL, 'inserted text', NOW(), NULL)


UPDATE `some_table` SET `text`='updated text' WHERE `id`=1


UPD
имелось ввиду при такой структуре таблицы
CREATE TABLE `some_table` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`text` TEXT,
`update_date` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ,
`insert_date` TIMESTAMP,
PRIMARY KEY ( `id` )
)

Спустя 5 минут, 7 секунд (12.07.2011 - 14:15) olgatcpip написал(а):
Нет, так конечно прокатит.

Но дело то не в этом.

Нужно чтоб не нужно было писать в запросе update и insert now() или CURRENT_TIMESTAMP

Оно и само может обновляться без наших лишних символов в запросе.

1 - через типы и дефолтовые значения, как в постгресе, возможно в мускуле есть, может и нет. Возможно типы не те вставляю, может не now()/CURRENT_TIMESTAMP писать нужно, может тип таблицы другой нужен.... мжет кто делал такое?

2 - через триггер то точно должно получиться. вот я и спрашиваю "Кто-нибудь делал, писал триггер под мускул?"


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.