问题我如何创建一个 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 ...
这可以在一个语句中完成,而不是使用触发器(我不喜欢它们,对于维护来说太令人惊讶了)
还是我需要先选择存在,然后相应地插入/更新?