2010-03-29 15 views
6

Her ekleme zamanındaki her siparişin zaman damgasını kaydetmek istediğim bir tablom var. Ancak, zaman damgaları için sıfır değerler alıyorum. . Bir istisna dışında, varsayılan değer bir sabit olmalıdırMySQL: NOW() bana zeros veriyor

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) 

cevap

3

"Bir veri türü şartnamede DEFAULT değer hükmü bir sütun için varsayılan değer gösterir, ancak bir işlev olamaz: Burada

benim şema var . ya bir ifade Bu tür() veya CURRENT_DATE" ŞİMDİ olarak bir fonksiyonun değeri olarak bir tarih sütun için varsayılan ayarlamak olamaz, örneğin, gelir

Kaynak: sen gidiyorsun http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

sütunu adlandırmak zorunda n, insert sorgunuzda ve Now() değerini değer olarak geçirin.

+9

Sen en yararlı bit değil mi bıraktı? "Bir istisna CURRENT_TIMESTAMP değerini bir TIMESTAMP sütunu için varsayılan olarak belirtebilmenizdir. Bkz. Bölüm 10.3.1.1," TIMESTAMP Özellikleri "(http://dev.mysql.com/doc/refman/5.1/en/timestamp.html) ." –

+0

+1 @ T.K. Crowder, bunu kaçırmış olmalı ..., teşekkürler! – Fabian

2

boş bir tarihle satırlar ekleyerek olmadığından emin olun:

INSERT INTO orders VALUES (1, 1, ''); 

üzerinde bir 0000-00-00 00:00:00 tarih eklemek olacaktır.


MySQL 5.0.51a beklendiği gibi aşağıdaki çalışır:

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) 
İlgili konular