默认值必须是一个常量;为什么



默认值必须为常量;它不能是一个函数或者表达

你能告诉我为什么吗?为什么我们必须给出恒定的默认值?

这是MySQL的限制。
您可以使用另一个RDBMS,或者使用触发器来解决这个问题。

CREATE TRIGGER yourtable_insert BEFORE INSERT ON `yourtable`
    FOR EACH ROW SET NEW.youraddedcolumn = NOW(), NEW.yourupdatedcolumn = NOW();

我能想到的一个原因是歧义。在将表达式存储为默认值或存储为每次INSERT之前,是否应该对其进行求值?

请注意,在表定义中可以使用一个非常量值:

stamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP

这只能在TIMESTAMP列上使用,但它足够有用。

最新更新