2013-11-21 47 views
1

我想在我的表中初始化缺省date字段與CURRENT_DATE();以及BENCH給我錯誤,這是不可能的,我聽到關於觸發器,但它似乎有點複雜的問題,所以是那裏沒有辦法讓這個以這樣一種方式如何初始化日期字段在MYSQL

  CREATE TABLE Sprzedaz (
     Id int unsigned primary key auto_increment, 
     KlientId int not null, 
     ProduktNumer int not null, 
     Ilosc int not null, 
     Cena float not null, 
     Data date default CURRENT_DATE(), 
     check (Data >= now()), 
     .... 
     ); 
+0

當我這樣做,我用觸發器來做。我或者在INSERT中傳入日期。 – OGHaza

回答

1

可以初始化與此TIMESTAMP列:

Data TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

或DATETIME列(MySQL的5.6+):

Data DATETIME DEFAULT CURRENT_TIMESTAMP 

,但如果你要初始化使用MySQL 5.5 DATE列你需要一個INSERT觸發器:

CREATE TRIGGER setdate_before_insert BEFORE INSERT ON test 
FOR EACH ROW 
    SET NEW.Data = CURDATE(); 

也許你還需要一個更新觸發器?請參閱小提琴here

1

另一種方式去了解這一點,如果你不介意改變date類型,將使用TIMESTAMPTIMESTAMP DEFAULT CURRENT_TIMESTAMP初始化。然後,您的定義將成爲:

CREATE TABLE Sprzedaz (
    Id int unsigned primary key auto_increment, 
    KlientId int not null, 
    ProduktNumer int not null, 
    Ilosc int not null, 
    Cena float not null, 
    Data TIMESTAMP DEFAULT CURRENT_TIMESTAMP, <<<==== change this 
    check (Data >= now()), 
    .... 
    );