@dimentimor

Как задать текущие дату и время значениями по умолчанию?

Здравствуйте!

Хотелось бы при создании таблицы указать "значение по умолчанию" = "вызов функции".
НЕ работающий пример:
CREATE TABLE IF NOT EXISTS `Orders` (
	`order_id` INT(9) NOT NULL AUTO_INCREMENT,
	`order_item` INT(9) DEFAULT NULL,
	`order_date` DATE DEFAULT CURRENT_DATE(), -- нужна дата
	`order_time` TIME DEFAULT SUBSTRING(CURRENT_TIME(), 1, 9), -- и время добавления
	PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Но вызвать эти функции получается только при добавлении записей:
INSERT INTO `Orders` (`order_item`, `order_date`, `order_time`) VALUES 
	('1', CURRENT_DATE(), SUBSTRING(CURRENT_TIME(), 1, 9);


Как можно вызвать функцию (встроенную или свою), или может есть что-то вроде "предварительного вычисления"? Или (скорее всего) решение совсем не там, где я его ищу..
Подскажите пожалуйста)
  • Вопрос задан
  • 574 просмотра
Решения вопроса 2
DevMan
@DevMan
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 or DATETIME column.
https://dev.mysql.com/doc/refman/5.7/en/create-tab...

поэтому или использовать CURRENT_TIMESTAMP или писать триггер.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вешать на таблицу триггер BEFORE INSERT с заполнением поля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы