Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / проблема: DATETIME default 'now()' / 10 сообщений из 10, страница 1 из 1
19.05.2005, 10:49
    #33073920
pi10t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
СУБД : 5.0.4-beta-standard
distrib : mysql-standard-5.0.4-beta-sun-solaris2.8-sparc-64bit.pkg

Создаю таблицу с полем DATETIME. хочу для этого поля значение по умолчанию поставить системная дата и время now().
наподобие Oracle 'default sysdate'.

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE sys_table 
(
   id TINYINT not null,
   start_time DATETIME default 'NOW()'
)
    engine=InnoDB;

получаю ошибку:
Invalid default value for 'start_time 1067

вроде поискал по инету. везде советуют так писать.
сделал вывод это работает на версии ниже чем 5.0.4.
...
Рейтинг: 0 / 0
19.05.2005, 11:40
    #33074080
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
...
Рейтинг: 0 / 0
19.05.2005, 16:10
    #33075108
Dmitri P.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE sys_table 
(
   id TINYINT not null,
   start_time TIMESTAMP
)
    engine=InnoDB;

первое поле типа timestamp обновляется автоматически при любом изменении записи.
...
Рейтинг: 0 / 0
19.05.2005, 17:09
    #33075404
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
Должен дополнить фразу
Код: plaintext
первое поле типа timestamp обновляется автоматически при любом изменении записи.
Только первое и обновляется!!!
Код: plaintext
mahoune
...
Рейтинг: 0 / 0
20.05.2005, 03:29
    #33076019
pi10t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
Johnmen Значения по умолчанию должны быть константами. Это означает, например, что нельзя установить для столбца даты в качестве значения по умолчанию величину функции, такой как NOW() или CURRENT_DATE

спасибо Джон. -)
я до этого читал английскую доку, но блин проглядел эту строчку.

2 othersl.
1. где вы увидели про timestamp?
2. я ж написал что мне нужно значение по умолчанию равное системной дате. а не обновление каждый раз.

anyway Спасибо за помощь, что очень приятно!


p.s.
странно что MYSQL отказались от default 'now()'.
теперь что триггер писать чтоли? -)
...
Рейтинг: 0 / 0
20.05.2005, 10:09
    #33076292
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
pi10t

А есть ли вообще триггеры ? :)
Лучше кликни по приведенной фразе - очень полезно...
...
Рейтинг: 0 / 0
20.05.2005, 16:15
    #33077637
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
просто будешь в явном виде вставлять NOW()... каки проблемы?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
22.05.2005, 08:45
    #33078906
pi10t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
maXmoпросто будешь в явном виде вставлять NOW()... каки проблемы?


с этим как и с тригерам проблем не будет, но...

идет миграция кода из оракла. хотелось бы пережить это меньшими потерями. -)



p.s.
ждем пока что 5.0.5 на след. неделе.
...
Рейтинг: 0 / 0
24.05.2005, 18:21
    #33082751
Astron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
pi10tнаподобие Oracle 'default sysdate'.

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE sys_table 
(
   id TINYINT not null,
   start_time DATETIME default 'NOW()'
)
    engine=InnoDB;

получаю ошибку:
Invalid default value for 'start_time 1067

вроде поискал по инету. везде советуют так писать.
сделал вывод это работает на версии ниже чем 5.0.4.

Нет, майскул за очень редким исключением не отказывается от поддержки ранее бывших фич. Тут может спасти отсутствие кавычек вокруг NOW()
Причем обновляться это поле при апдейтах вроде как не должно, если ему
ON UPDATE NOW()
не написать.
Насчет миграции с Оракла - сочувствую :-)
Триггеры есть, но насколько я помню с серьезными ограничениями. Если уж все функции по определению RNDS WNDS....
...
Рейтинг: 0 / 0
25.05.2005, 03:01
    #33083063
pi10t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема: DATETIME default 'now()'
Astron
Нет, майскул за очень редким исключением не отказывается от поддержки ранее бывших фич. Тут может спасти отсутствие кавычек вокруг NOW()


как было указано выше NOW() как значение по умолчанию (default) не будет работать.
смотрите ссылку на оффиц. документацию http://dev.mysql.com/doc/mysql/en/create-table.html

The DEFAULT clause specifies a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE . The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column as of MySQL 4.1.2. See Section 11.3.1.2, “TIMESTAMP Properties as of MySQL 4.1”.

проверено с кавычками и без.

решение: перейти на TIMESTAMP.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / проблема: DATETIME default 'now()' / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]