如何初始化日期FIELD IN MYSQL

时间:2013-11-21 20:50:51

标签: mysql database

我想用date来初始化我的表中的默认CURRENT_DATE();字段。BENCH给我的错误是我听说不可能的触发器,但它似乎有点过于复杂,因为这个问题是有办法以这种方式做到这一点

           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()),
         ....
          );

3 个答案:

答案 0 :(得分:1)

另一种解决方法是,如果您不介意更改date类型,则可以使用TIMESTAMP并使用TIMESTAMP 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()),
     ....
      );

答案 1 :(得分:1)

您可以使用以下命令初始化TIMESTAMP列:

Data TIMESTAMP DEFAULT CURRENT_TIMESTAMP

或DATETIME列(MySQL 5.6 +):

Data DATETIME DEFAULT CURRENT_TIMESTAMP

但是如果你想使用MySQL 5.5初始化DATE列,你需要一个INSERT TRIGGER:

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

也许您还需要一个UPDATE触发器?请参阅小提琴here

答案 2 :(得分:0)

如果你有MySQL 5.6.5及更高版本,你可以使用CURRENT_TIMESTAMP代替CURRENT_DATE

请参阅http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

所以你不能用日期来做,但你可以改变你的领域成为TIMESTAMP或DATETIME并让你的母亲兄弟B !!