powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / проблема: DATETIME default 'now()'
10 сообщений из 10, страница 1 из 1
проблема: DATETIME default 'now()'
    #33073920
pi10t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СУБД : 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
проблема: DATETIME default 'now()'
    #33074080
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
проблема: DATETIME default 'now()'
    #33075108
Dmitri P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE sys_table 
(
   id TINYINT not null,
   start_time TIMESTAMP
)
    engine=InnoDB;

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

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

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

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


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

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


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

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



p.s.
ждем пока что 5.0.5 на след. неделе.
...
Рейтинг: 0 / 0
проблема: DATETIME default 'now()'
    #33082751
Astron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
проблема: DATETIME default 'now()'
    #33083063
pi10t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / проблема: DATETIME default 'now()'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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