sql - 确定行是否已更新
问题描述
可能是一个很长的镜头,但我正在寻找一种方法来查看自插入以来是否已更新行。
前任。
CREATE TABLE TEST_DATA AS
( SELECT 'A' AS dummy
FROM dual
UNION
SELECT 'B' AS dummy
FROM dual
);
UPDATE TEST_DATA
SET dummy = 'C'
WHERE dummy = 'B';
有什么方法可以告诉我“C”记录已经更新了吗?
此外,我完全无法控制数据模型,因此我无法将添加时间戳和更新时间戳添加到实际表中。
解决方案
这将起作用:
create table test_data(a varchar(1));
insert into test_data values('A');
insert into test_data values('B');
insert into test_data values('C');
insert into test_data values('D');
select * from test_data;
A
B
C
D
create table noofchanges(data varchar(1),numberofchanges int) ;
insert into noofchanges(data,numberofchanges) select a,0 from test_data;
select * from noofchanges;
A 0
B 0
C 0
D 0
CREATE OR REPLACE TRIGGER test_data_before_update
BEFORE UPDATE
ON test_data
FOR EACH ROW
BEGIN
update noofchanges
set numberofchanges=numberofchanges+1
where data=:old.a;
END;
update test_data set a='A' where a='B';
select * from test_data;
A
A
C
D
select * from noofchanges
A 0
B 1
C 0
D 0
谢谢你!!!!!!
推荐阅读
- node.js - 使用 AWS 时,我应该在哪里上传我的应用程序文件?
- excel - Workbook_Open v QueryTable.Refresh BackgroundQuery
- javascript - 将增量 ID 设置为动态创建的元素 (DIV) 并为每个 DIV 分配 onclick 事件
- javascript - 垃圾收集 - 现代 javascript 和 nodejs
- reactjs - 在画布中反应三个纤维锁定对象位置
- bash - 回答多个命令行提示到 GitHub 用户名/密码
- python - 哪个是更好的哈希函数以及为什么: hash((int1, int2, int3)) 或 hash(int1 + int2 + int3)
- google-sheets - 我试图找出一个谷歌表格公式,它将为总金额单元格中的每 12.50 添加 3.13 到一个单元格?
- javascript - 我坚持将代码从旧版本的 Discord Js 转换为现代 Discord Js
- linux - 如何将 \ 与 read 命令一起使用?