У меня есть таблица, которая я хочу записать метку времени каждого порядка в каждый раз вставки. Однако я получаю нулевые значения для меток времени.
Вот моя схема:
CREATE TABLE IF NOT EXISTS orders(
order_no VARCHAR(16) NOT NULL,
volunteer_id VARCHAR(16) NOT NULL,
date TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (order_no),
FOREIGN KEY (volunteer_id) REFERENCES volunteer(id)
ON UPDATE CASCADE ON DELETE CASCADE)
"Предложение значения DEFAULT в спецификации типа данных указывает значение по умолчанию для столбца. За одним исключением значение по умолчанию должно быть константой; оно не может быть функцией или выражением. Это означает, например, что вы не можете установить значение по умолчанию для столбца даты как значение функции, такой как NOW () или CURRENT_DATE "
Источник: http: // dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Вам нужно будет назвать столбец в вашем запросе вставки и передать Now () в качестве значения.
Убедитесь, что вы не вставляете строки с пустой датой:
INSERT INTO orders VALUES (1, 1, '');
В приведенном выше примере будет вставлена дата 0000-00-00 00:00:00
.
Следующее работает как ожидалось в MySQL 5.0.51a:
CREATE TABLE IF NOT EXISTS orders(
order_no VARCHAR(16) NOT NULL,
volunteer_id VARCHAR(16) NOT NULL,
date TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (order_no));
INSERT INTO orders (order_no, volunteer_id) VALUES (1, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (2, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (3, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (4, 1);
SELECT * FROM orders;
+----------+--------------+---------------------+
| order_no | volunteer_id | date |
+----------+--------------+---------------------+
| 1 | 1 | 2010-03-29 17:10:37 |
| 2 | 1 | 2010-03-29 17:10:40 |
| 3 | 1 | 2010-03-29 17:10:44 |
| 4 | 1 | 2010-03-29 17:10:48 |
+----------+--------------+---------------------+
4 rows in set (0.00 sec)