首页 > 解决方案 > 如何在选择另一个表时更新时间戳列

问题描述

我有 2 张桌子:

CREATE TABLE IF NOT EXISTS t1
(
    id UUID NOT NULL,
    last_login TIMESTAMP,
    PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS t2
(
    id UUID NOT NULL,
    t1_id UUID NOT NULL,
    PRIMARY KEY (id),

    CONSTRAINT ids
        FOREIGN KEY (t1_id)
            REFERENCES t1 (id)
            ON DELETE CASCADE
            ON UPDATE NO ACTION

);

我想从t2中选择一行并更新t1 表中相应t1 id的last_login时间戳。

是否可以在单个查询中执行此操作?

标签: sqldatabasepostgresqljooq

解决方案


你不能同时UPDATESELECT同一个 SQL 操作中。不过,您有一些选择:

  1. 在应用程序级别执行 - 更新登录名,然后选择数据
  2. 将其作为一个 SPROC / 函数执行,您可以在两个操作按顺序执行的地方执行,如果需要可能回滚
  3. 使用触发器独立更新登录
  4. 如果它们始终是 1 对 1,则合并表格以简化事情

推荐阅读