如何根据 SQL 中的最新更新创建条件唯一约束

问题描述 投票:0回答:1

我有一个跟踪更新的日志表,其结构如下:

CREATE TABLE user_log (
    name_id VARCHAR,
    modified DATE,
    -- Other fields...
);

我的目标是基于 name_id 实现唯一约束,确保仅显示每个 name_id 的最新条目。随后,我计划在另一个表上建立外键约束,引用 name_id 属性。

我只能创建一个复合密钥,解决此类问题的正确方法是什么?

sql postgresql constraints unique
1个回答
0
投票

SQL 没有对基于聚合函数(如

MAX
)强制执行唯一记录的约束的内置支持。这使得在
name_id
上创建唯一约束以确保仅保留最新记录变得具有挑战性。

一种解决方案是创建一个单独的表,仅存储每个

name_id
的最新记录,并对
name_id
进行唯一约束。要保持此表更新,您可以在原始 user_log 表上使用触发器,以便在有新日志条目时在 “current” 表中插入或更新记录。

© www.soinside.com 2019 - 2024. All rights reserved.