我想在mysql(而非时间戳)中将日期设置为日期的默认值,但会出现以下错误
ALTER TABLE `RMS`.`transactionentry`
CHANGE `Date` `Date` DATE DEFAULT NOW() NOT NULL
错误
Invalid default value for 'Date'
相同案例
alter table `RMS`.`transactionentry`
change `Date` `Date` date default 'CURRENT_DATE' NOT NULL
答案 0 :(得分:13)
alter table `RMS`.`transactionentry`
change `Date` `Date` date default current_timestamp NOT NULL
我认为你无法用mysql date
实现这一目标。您必须使用timestamp
或尝试此方法..
CREATE TRIGGER transactionentry_OnInsert BEFORE INSERT ON `RMS`.`transactionentry`
FOR EACH ROW SET NEW.dateColumn = IFNULL(NEW.dateColumn, NOW());
答案 1 :(得分:9)
数据类型规范中的DEFAULT值子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是一个功能或表达。这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE。例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。
答案 2 :(得分:1)
根据MySQL网站:
数据类型规范中的DEFAULT值子句表示a 列的默认值。除了一个例外,默认值必须 是一个常数;它不能是一个功能或表达。这个 例如,您不能设置日期列的默认值 是一个函数的值,如NOW()或CURRENT_DATE。该 例外情况是您可以将CURRENT_TIMESTAMP指定为默认值 对于TIMESTAMP列。
所以:
alter table `RMS`.`transactionentry`
change `Date` `Date` date default CURRENT_TIMESTAMP NOT NULL
应该有效。你的问题是你通过在它周围放置引号来使它成为一个字符串。
答案 3 :(得分:0)
记住它可能是MYSQL版本本身的问题5.6允许时间戳没有默认值,并且不需要将它们设置为null但是5.7要求你明确设置默认值,如果不是那么nul
答案 4 :(得分:-1)
您可以使用以下方式更改列定义:
@HostListener('document:keypress', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
this.key = event.key;
// inside this you can catch your key code
// then check is it backspace or delete keycode
// if it is then remove data from selector with help of NgControl.
}
允许null对我有用。