MYSQL不接受现在(NOW())作为日期时间字段的默认值。
MYSQL不接受现在(NOW())作为日期时间字段的默认值。
这个问题已经有答案了:
我试图在MySQL中将日期时间字段的默认值设置为NOW()
,但是MySQL错误显示它无效?
/* create the invoice table */ CREATE TABLE IF NOT EXISTS INVOICE ( LINE_ID INT(9) NOT NULL AUTO_INCREMENT, INVOICE_ID INT(9) NOT NULL, QUANTITY INT(9) NOT NULL DEFAULT '1', INVOICE_DATE DATETIME NOT NULL DEFAULT NOW(), TO_DELIVER BOOLEAN NOT NULL DEFAULT 0, CUSTOMER_ID INT(9) NOT NULL, PRODUCT_ID INT(9) NOT NULL, PRIMARY KEY (LINE_ID, INVOICE_ID) );
设置日期时间字段的默认值的正确方法是什么?
admin 更改状态以发布 2023年5月23日
BEFORE INSERT
触发器可用于分配列的值,包括将当前日期和时间分配给DATETIME列。
DELIMITER $$ CREATE TRIGGER invoice_bi BEFORE INSERT ON invoice FOR EACH ROW BEGIN IF NEW.invoice_date IS NULL THEN NEW.invoice_date = NOW(); END IF; END; $$ DELIMITER ;
在MySQL 5.6.x之前,只能将文字值分配给DATETIME
列的默认值。只有TIMESTAMP
列可以分配当前日期和时间的默认值。如果将列更改为TIMESTAMP
,请注意“自动”初始化和更新行为。为了使列初始化并且在更改行时不更新...
invoice_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP