此问题已在此处有答案:
MySQL default value on NULL(3个答案)
6天前关闭
我想实现以下目标:
MySQL中表中的I字段,当提供NULL值时,应解析为当前时间。
我做了以下操作:
CREATE TABLE foo (
bar TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
baz INT
);
-- Now let's insert something.
INSERT INTO foo (bar, baz) VALUES (null, 2);
-- Now let's make sure it works as desired.
SELECT * FROM foo;
但不幸的是,它并不像预期的那样工作:
**********
bar | baz
**********
null | 2
只有当我在INSERT
语句中省略列的值时,它才有效。
如何使上面的INSERT
语句工作?也就是说,当值为空时,该字段应设置为默认时间。
1条答案
按热度按时间yeotifhr1#
你所要求的是不可能只使用SQL中的声明性功能:
DEFAULT
约束仅在INSERT
中省略列(或使用DEFAULT
作为值)时使用-否则(据我所知)替换或覆盖INSERT
或UPDATE
中的值的唯一其他方法需要使用TRIGGER
(这是非声明性的,并引入了自己的问题)。相反,为什么不将
bar
设置为NOT NULL
列,并确保所有INSERT
语句都省略该列呢?或者更改INSERT
语句以使用DEFAULT
关键字?就像这样: