sql - 如何在选择另一个表时更新时间戳列
问题描述
我有 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时间戳。
是否可以在单个查询中执行此操作?
解决方案
你不能同时UPDATE
在SELECT
同一个 SQL 操作中。不过,您有一些选择:
- 在应用程序级别执行 - 更新登录名,然后选择数据
- 将其作为一个 SPROC / 函数执行,您可以在两个操作按顺序执行的地方执行,如果需要可能回滚
- 使用触发器独立更新登录
- 如果它们始终是 1 对 1,则合并表格以简化事情
推荐阅读
- rust - 理解在迭代器上调用方法两次时如何满足借用检查器?
- templates - 这些将安全数组转换为 std::list 对象的方法可以转换为模板函数吗?
- oracle - 如何在 JPA 中插入属于 EmbeddedId 的元素的值?
- php - 当我使用准备好的语句进行搜索日期输入时出现致命错误
- python - 使用 numpy 数组列值的条件过滤 Pandas DataFrame
- amazon-web-services - 使用 MFA 与 EC2 和 RDS 建立 SSH 连接
- sql-server - SQL 查询 - CASE STATEMENT 返回 2 行或更多行 - 从中选择一个值
- server - Roudcube 版本 1.4.4 电子邮件详细信息的加载时间长
- python - 在 Python 中为 DNG 和处理创建图像蒙版
- django-rest-framework - 如何在后端使用 Nuxt 和 Django 在我的 axios 请求中发送 CSRFToken?