我有一个跟踪更新的日志表,其结构如下:
CREATE TABLE user_log (
name_id VARCHAR,
modified DATE,
-- Other fields...
);
我的目标是基于 name_id 实现唯一约束,确保仅显示每个 name_id 的最新条目。随后,我计划在另一个表上建立外键约束,引用 name_id 属性。
我只能创建一个复合密钥,解决此类问题的正确方法是什么?
SQL 没有对基于聚合函数(如
MAX
)强制执行唯一记录的约束的内置支持。这使得在 name_id
上创建唯一约束以确保仅保留最新记录变得具有挑战性。
一种解决方案是创建一个单独的表,仅存储每个
name_id
的最新记录,并对 name_id
进行唯一约束。要保持此表更新,您可以在原始 user_log 表上使用触发器,以便在有新日志条目时在 “current” 表中插入或更新记录。