Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Премодерация сообщений


Автор: console 15.12.2007, 00:15
Необходимо разработать простенький форум для сайта.

Код

CREATE TABLE `comments` (
  `comment_id` bigint(20) unsigned NOT NULL,
  `page_id` bigint(20) unsigned NOT NULL,
  `user_id` bigint(20) unsigned NOT NULL,
  `post_date` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
  `comment_value` text character set utf8 NOT NULL,
  `is_approved` varchar(1) default '0',
  PRIMARY KEY  (`comment_id`)
)


Комментарии должен одобрять модератор. Допустим, напишу функцию, которая будет изменять значение поля is_approved с нуля на единицу, как сделать так, чтобы дата post_date не обновлялась на текущую? Или проще сделать текстовое поле вместо TIMESTAMP, и записывать туда значение time() ?

Автор: Feldmarschall 15.12.2007, 00:19
а что - кроме текстовых полей и TIMESTAMP в mysql больше нет типов полей для даты?

и зачем писать on update CURRENT_TIMESTAMP, если не нужен CURRENT_TIMESTAMP on update?

Автор: skyboy 15.12.2007, 02:13
перейди от конструкции 
Цитата(console @  14.12.2007,  23:15 Найти цитируемый пост)
Код

on update CURRENT_TIMESTAMP

к триггеру, который будет проверять: если при update меняется is_approved с 0 на 1, то post_date не меняем. Иначе - меняем.

Добавлено через 52 секунды
Цитата(skyboy @  15.12.2007,  01:13 Найти цитируемый пост)
триггеру

триггер либо на on before update, либо на on after update smile

Автор: Feldmarschall 15.12.2007, 08:56
skyboy, триггеры, конечно, хорошая вещь, но в данном случае это явно лишнее =)
во-первых, в данном случае вообще не требуется менять значение поля автоматом.
во-вторых, сама функционалность поля timestamp и была придумана, чтобы эмулировать триггер при работе с датой.
а в данном случае timestamp - явно избыточно.

Автор: MoLeX 15.12.2007, 10:19
Цитата(Feldmarschall @  15.12.2007,  00:19 Найти цитируемый пост)
и зачем писать on update CURRENT_TIMESTAMP, если не нужен CURRENT_TIMESTAMP on update? 

согласен, зачем?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)