找回密码
 立即注册

QQ登录

只需一步,快速开始

mfkpie8
银牌会员   /  发表于:2021-9-19 17:22:26
8#
qq8009 发表于 2021-9-19 13:08
感谢回答,这个方法我也有考虑过了,只是没办法实现我想要的功能,Update记录不完整(具体请看https://gc ...

我的需求跟你实际也是一样的 ,可以把内容做一个包含按单号来查询呢!你试着做起来看下下我们跟进一下!做个DEMO
回复 使用道具 举报
qq8009活字格认证
银牌会员   /  发表于:2021-9-19 13:08:59
7#
mfkpie8 发表于 2021-9-19 12:25
建议不要这么复杂化,能追溯谁修改了就好了。能以单号做为唯一性,不是论坛里面有一个修改日志自动读入数 ...

感谢回答,这个方法我也有考虑过了,只是没办法实现我想要的功能,Update记录不完整(具体请看https://gcdn.grapecity.com.cn/showtopic-96865-1-1.html),我不需要数据恢复,这个方案无法朔源才被放弃的
回复 使用道具 举报
mfkpie8
银牌会员   /  发表于:2021-9-19 12:25:57
6#
本帖最后由 mfkpie8 于 2021-9-19 12:29 编辑
qq8009 发表于 2021-9-18 16:45
触发器不会写,有没有案例啥的,我可以不用还原数据的

建议不要这么复杂化,能追溯谁修改了就好了。能以单号做为唯一性,不是论坛里面有一个修改日志自动读入数据库的吗?

https://gcdn.grapecity.com.cn/fo ... 0&fromuid=51381

我的建议是在这个前提上优化,因为考虑的业务逻辑不是一般的多!这个每一个程序都是不同的没必要去做记录恢复,


按唯一性 单据类型+单号进行追溯就很好了!没必要做到恢复的
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-18 17:44:35
4#
qq8009 发表于 2021-9-18 16:45
触发器不会写,有没有案例啥的,我可以不用还原数据的

这个网上有很多教程的,我给您找了几个,您可以参考参考。

Oracle中用触发器实现自动记录表数据被修改的历史信息

SQL Server 用触发器实现表的历史记录
回复 使用道具 举报
qq8009活字格认证
银牌会员   /  发表于:2021-9-18 16:45:44
3#
Lay.Li 发表于 2021-9-18 16:33
大佬,这个之前有个格友做过这样一个功能,而且他做的不但有历史表,还可以一键恢复至之前的表的状态。不过 ...

触发器不会写,有没有案例啥的,我可以不用还原数据的
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-18 16:33:54
2#
大佬,这个之前有个格友做过这样一个功能,而且他做的不但有历史表,还可以一键恢复至之前的表的状态。不过这个实现起来挺困难的,这边有一个思路就是,写一个触发器。每次做增删改查操作时,将变动之前的表的数据和对应操作储存至备份表的一条数据中。然后备份表就相当于是一个历史表,这样不但可以查对表的操作,还可以从备份表中直接恢复之前表的状态。
回复 使用道具 举报
最佳答案
最佳答案
孤狼悬赏达人认证 活字格认证
高级会员   /  发表于:2021-9-18 13:35:44
来自 5#
本帖最后由 孤狼 于 2021-9-19 08:56 编辑

我在生产环境做过,给你提供几个思路吧:

非活字格环境下,基于数据库触发器可以实现这个功能。sql server、postgresql、mysql都实现过;

在活字格环境下,可以搭配数据库的存储过程,自定义表名、字段名,对相关数据流进行二次加工。比如正常的增删改查后,对相关表、字段进行二次保存到备份表。如果数据量小,可以放在前端页面上。如果数据量大,需要定时对备份表和业务表进行轮询,把增量部分保存到备份表。

其实你纠结的点就是表名、字段名等信息需要自定义,存储过程能很好的解决这个问题,它天生就是为了自定义变量而存在的。
存储过程在sql server、postgresql都有很成熟的应用了,你可以直接百度 存储过程 即可。

原理也很简单,就是告诉数据库,我要把a表、b字段的c值保存到d表、e字段,这里的abcde都可以通过变量赋值的方式进行定义,不再局限于select 固定字段名 from 固定表名  这种形式了。

如果觉得有帮助,记得选我为最佳答案哟,感谢

回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部