我有一个名为pollOfTheWeek的mysql表。它有一个类型为date的列“pollDate”。我有两个问题: 1.我在创建表时声明了列作为[pollDate date]我想要的是当用户没有为此列输入任何值时自动设置此列。如何声明列以实现此目的?
答案 0 :(得分:2)
您需要创建一个触发器:
CREATE TRIGGER triggerName
BEFORE INSERT ON yourTable
FOR EACH ROW
SET NEW.date = coalesce(NEW.date, curdate());
空值为null
。
答案 1 :(得分:1)
无法在mysql中自动将DATE
列设置为当前日期/时间。 TIMESTAMP
可以自动设置为当前时间。或者,在插入时只需将NOW()
作为参数传递:
INSERT INTO pollOfTheWeek (name, pollDate) VALUES ('someName', NOW());
关于您的其他问题,您可能希望在日期列中允许NULL值,并在没有给出日期时将它们设置为NULL。
答案 2 :(得分:1)
MySQL对默认值的支持非常有限。通常,它必须是'0'
或'(none)'
之类的常量表达式,并且不允许使用函数。我知道的唯一例外是您可以将CURRENT_TIMESTAMP
设置为TIMESTAMP
列的默认值;但是,这不适用于DATE
或DATETIME
列。不幸的是,TIMESTAMP
的范围较小,包含时间信息。
所以你的选择是:
CREATE TRIGGER pollOfTheWeek_trg BEFORE INSERT ON pollOfTheWeek
FOR EACH ROW SET NEW.pollDate = NOW();
关于空值,我只想使用NULL。为什么要使用空字符串?