我想用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()),
....
);
答案 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 !!