如何实现oracle一次更新多行记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现oracle一次更新多行记录相关的知识,希望对你有一定的参考价值。
在网上看到的,记录下,实现多行多列更新update table1 r
set (r.city,r.COUNTY,r.CELL_NAME,r.CELL_UK)
=
( select
m.company_name,m.COUNTY_NAME,m.cell_name,m.cell_uk
FROM table2 m where m.flow_id = r.flow_id
)
where exists (select 1 from table2 m where m.flow_id = r.flow_id )
创建联合主键如下:
ALTER TABLE ADD CONSTRAINTS '约束名' PRIMARY KEY (COLUMN,COLUMN,...); 参考技术A 根据where条件判断啊。
如何识别 Oracle 中最近更新的记录?
【中文标题】如何识别 Oracle 中最近更新的记录?【英文标题】:How to identify recently updated records in Oracle? 【发布时间】:2020-10-03 19:37:30 【问题描述】:如何查询 Oracle(11.2.0.4.0) 数据库以识别最近几分钟更新的记录?没有用于存储上次修改时间戳的列,我不是在寻找查询来识别最近几分钟内“插入”的记录,而是最后一次“更新”的记录。
假设表 A 有 10 条记录,B 是主键。有一列“启用”的值为 1 或 0。9 条记录的值为启用 1,1 条记录的值为 0。如果我将其中一条记录(启用 = 1)更新为 0,那么如何识别这个特定的更新记录?
下面的查询给出 2 条记录(应该只返回 1 条记录)-
select * from A
where enable = 0
and B in (select B from A as of TIMESTAMP (SYSTIMESTAMP - INTERVAL'5'MINUTE));
【问题讨论】:
【参考方案1】:如果没有一些示例数据,很难准确地遵循您的要求,但我认为您希望它比较表格以找到与 5 分钟前的值相比发生变化的行(您可以使用 MINUS
来完成)然后过滤以仅显示ENABLE
值为0
的行。比如:
SELECT *
FROM (
SELECT * FROM A
MINUS
SELECT * FROM A AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '5' MINUTE )
)
WHERE ENABLE = 0;
【讨论】:
像魅力一样工作。谢谢!以上是关于如何实现oracle一次更新多行记录的主要内容,如果未能解决你的问题,请参考以下文章