【发布时间】:2010-11-11 15:42:08
【问题描述】:
问题 我怎样才能创建一个 MySQL 表,以便字段的默认值是函数的输出。
可以不用插入触发器来完成吗?
背景:需要每天观察一些实体及其所属的群体。
为此,我创建了以下 MySQL 表:
CREATE TABLE entity (
entity_id VARCHAR(10) NOT NULL,
group_id VARCHAR(10) NOT NULL,
first_seen DATE NOT NULL,
last_seen DATE NOT NULL,
PRIMARY KEY (entity_id,group_id)
)
脚本每天解析实体日志并写入 entity_raw,然后我想使用更新表
REPLACE INTO entity (entity_id,group_id,last_seen)
SELECT entity_id,group_id,record_date
FROM entity_raw
WHERE (record_date = DATE(DATE_SUB(NOW(),INTERVAL 1 DAY))
插入新的 (entity_id,group_id) 对时自然会出错,因为 first_seen 可能不为 NULL...
这可以在一个语句中完成,而不是使用触发器(我不喜欢它们,对于维护来说太令人惊讶了)
还是我需要先选择存在,然后相应地插入/更新?
【问题讨论】: