+-------------------------+
| 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);
谢谢你的时间!
答案 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”