sysdatetime()的错误

时间:2016-06-15 00:04:59

标签: mysql

+-------------------------+
| Tables_in_movierentaldb |
+-------------------------+
| MEMBERSHIP              |
| PRICE                   |
| RENTAL                  |
| movie                   |
| video                   |
+-------------------------+

mysql> describe rental
    -> ;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| RENT_NUM  | int(11) | NO   | PRI | NULL    |       |
| MEM_NUM   | int(11) | YES  | MUL | NULL    |       |
+-----------+---------+------+-----+---------+-------+

Hello stackoverflow社区, 我在mysql中创建表时遇到问题,我想输入:

alter table RENTAL add RENT_DATE datetime default SYSDATETIME(); 

我收到语法错误。

创建表时我没有输入的原因,因为我在尝试在create table命令中输入时遇到了相同的语法问题:

CREATE TABLE RENTAL (
RENT_NUM     int PRIMARY KEY,
RENT_DATE   DATE DEFAULT SYSDATETIME(),
MEM_NUM int CONSTRAINT RENTAL_MEM_NUM_FK REFERENCES MEMBERSHIP);

我对约束MEM_NUM有同样的问题但是当我输入以下命令时它能够创建约束:

alter table RENTAL add foreign key (MEM_NUM) references
MEMBERSHIP(MEM_NUM);

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

你必须使用:

alter table RENTAL add RENT_DATE datetime default CURRENT_TIMESTAMP; 
  

数据类型规范中的DEFAULT值子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是一个功能或表达。这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE。例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP和DATETIME列的默认值。 See Section 12.3.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”

DOCs here