ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 747|回复: 10

[PL/SQL] 求一记录修改历史的SQL语句

[复制链接]
论坛徽章:
1
ERP板块每日发贴之星
日期:2010-11-14 01:01:01
发表于 2017-11-9 16:44 | 显示全部楼层 |阅读模式
本帖最后由 Barry_leung 于 2017-11-13 11:24 编辑

在PO_LINE表中,需要将每个采购行对应的PO、 VENDOR、 PO_LINE、QTY、PRICE_TAX、PRICE_NO_TAX、PROMISE_DATE,TAX、Amount的修改前与修改后数据进行记录,其中PO_LINE在后台sql数据中已经存在该table了,结果表需要自己在创建,相当于数据表修改更新的审计日志, 请问通过SQL该如何实现?
最原始数据:
po
vendor
po_line
item
qty
um
price_tax
price_no_tax
promise_date
tax
Amount
9100888
caowei
1
40000F05
1000
PCS
23
19.6581
2018/1/5
17%
23000
9100888
caowei
2
40101301
5000
PCS
36
30.7692
2018/1/5
17%
180000
9100888
caowei
3
40101401
6000
PCS
11
9.4017
2018/1/5
17%
66000
第一次(11月8号)更改后的数据(手工更改了qty、price_tax字段,系统自动更改了price_no_tax、amount字段):
po
vendor
po_line
item
qty
um
price_tax
price_no_tax
promise_date
tax
Amount
9100888
caowei
1
40000F05
2000
PCS
21
17.9487
2018/1/5
17%
42000
9100888
caowei
2
40101301
4000
PCS
32
27.3504
2018/1/5
17%
128000
9100888
caowei
3
40101401
7000
PCS
10.6
9.0598
2018/1/5
17%
74200
第二次(11月9号)更改后的数据(在第一次更改保存数据基础上手工更改了promise_date字段):
po
vendor
po_line
item
qty
um
price_tax
price_no_tax
promise_date
tax
Amount
9100888
caowei
1
40000F05
2000
PCS
21
17.9487
2018/1/10
17%
42000
9100888
caowei
2
40101301
4000
PCS
32
27.3504
2018/1/15
17%
128000
9100888
caowei
3
40101401
7000
PCS
10.6
9.0598
2018/1/16
17%
74200



结果:
modify_date
po
vendor
po_line
item
old_qty
new_qty
um
old_price_tax
new_price_tax
old_price_no_tax
new_price_no_tax
old_promise_date
new_promise_date
tax
old_Amount
new_Amount
2017/11/8
9100888
caowei
1
40000F05
1000
2000
PCS
23
21
19.6581
17.9487
2018/1/5
17%
23000
42000
2017/11/8
9100888
caowei
2
40101301
5000
4000
PCS
36
32
30.7692
27.3504
2018/1/5
17%
180000
128000
2017/11/8
9100888
caowei
3
40101401
6000
7000
PCS
11
10.6
9.4017
9.0598
2018/1/5
17%
66000
74200
2017/11/9
9100888
caowei
1
40000F05
2000
PCS
21
17.9487
2018/1/5
2018/1/10
17%
42000
2017/11/9
9100888
caowei
2
40101301
4000
PCS
32
27.3504
2018/1/5
2018/1/15
17%
128000
2017/11/9
9100888
caowei
3
40101401
7000
PCS
10.6
9.0598
2018/1/5
2018/1/16
17%
74200
 



论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
发表于 2017-11-9 19:14 | 显示全部楼层
TRIGGER BEFORE UPDATE ON PO_LINE  FOR EACH ROW

INSERT INTO xxx (...) values ld.xxx
INSERT INTO xxx (...) values :new.xxx

使用道具 举报

回复
论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
发表于 2017-11-9 19:14 | 显示全部楼层
ld                         ...........

使用道具 举报

回复
论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
发表于 2017-11-9 19:15 | 显示全部楼层
原来冒号O是 疑问 哈哈

使用道具 举报

回复
论坛徽章:
1
ERP板块每日发贴之星
日期:2010-11-14 01:01:01
 楼主| 发表于 2017-11-10 14:13 | 显示全部楼层
却早已分离 发表于 2017-11-9 19:14
TRIGGER BEFORE UPDATE ON PO_LINE  FOR EACH ROW

INSERT INTO xxx (...) values ld.xxx

能否完整一点写出来?PO_line是有Table存储更改后的最新数据

使用道具 举报

回复
论坛徽章:
480
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
发表于 2017-11-11 05:16 | 显示全部楼层
Barry_leung 发表于 2017-11-10 14:13
能否完整一点写出来?PO_line是有Table存储更改后的最新数据

你也知道要写“完整”?看看你自己写的什么贴?
参见置顶帖提问的智慧。

使用道具 举报

回复
认证徽章
论坛徽章:
168
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
发表于 2017-11-13 10:36 | 显示全部楼层
Barry_leung 发表于 2017-11-10 14:13
能否完整一点写出来?PO_line是有Table存储更改后的最新数据

腻害了,还能要求别人。

使用道具 举报

回复
论坛徽章:
1
ERP板块每日发贴之星
日期:2010-11-14 01:01:01
 楼主| 发表于 2017-11-13 11:25 | 显示全部楼层
Naldonado 发表于 2017-11-13 10:36
腻害了,还能要求别人。

sorry,已重新更新了帖子

使用道具 举报

回复
论坛徽章:
21
秀才
日期:2015-10-08 17:57:58秀才
日期:2015-12-14 15:09:38秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-21 09:48:11秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-25 14:55:31秀才
日期:2016-02-18 09:24:18秀才
日期:2016-02-18 09:24:30秀才
日期:2016-02-18 10:08:14秀才
日期:2015-12-14 15:02:13
发表于 2017-11-13 16:03 | 显示全部楼层
哈哈,来这里主要是得到思路,不是每个详细的步骤

使用道具 举报

回复
论坛徽章:
480
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
发表于 2017-11-13 23:20 | 显示全部楼层
Barry_leung 发表于 2017-11-13 11:25
sorry,已重新更新了帖子

你没有按照要求发帖。
要有CREATE TABLE 脚本。
要有INSERT测试数据脚本。
按你这个需求还得给出两次UPDATE的脚本。
这些不用别人帮忙吧?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表