如何在将 select 更新为另一个 table 的同时更新时间戳列
How to update a timestamp column whilst making a select to another table
我有 2 个 table:
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 中 select 一行并更新相应的 last_login 时间戳t1 id 在 t1 table.
是否可以在单个查询中执行此操作?
您不能在同一个 SQL 操作中同时使用 UPDATE
和 SELECT
。不过你有一些选择:
- 在应用程序级别执行 - 更新登录,然后 select 数据
- 将其作为一个 SPROC / 函数执行,您可以在其中按顺序执行两个操作并在需要时可能回滚
- 使用触发器独立更新登录
- 合并表格以简化事情,如果它们总是 1 对 1 的话
我有 2 个 table:
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 中 select 一行并更新相应的 last_login 时间戳t1 id 在 t1 table.
是否可以在单个查询中执行此操作?
您不能在同一个 SQL 操作中同时使用 UPDATE
和 SELECT
。不过你有一些选择:
- 在应用程序级别执行 - 更新登录,然后 select 数据
- 将其作为一个 SPROC / 函数执行,您可以在其中按顺序执行两个操作并在需要时可能回滚
- 使用触发器独立更新登录
- 合并表格以简化事情,如果它们总是 1 对 1 的话