默认值必须为常量;它不能是一个函数或者表达
你能告诉我为什么吗?为什么我们必须给出恒定的默认值?
这是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
列上使用,但它足够有用。