这个问题应该怎么解决???

chjx1982 2009-07-13 03:04:41
现在有个这样的问题,比如我们的新闻,要增加,修改,删除,我可以记录增加的时间,最后一次修改的时间,因为我们的新闻经常要修改的,所以我要知道什么时候作过修改??修改过哪个地方??能把它记录下来,而且一下子就能知道。我是这样想的,可以用日志来记录它们,每次修改前把前面的保存下来,然后修改之后的再保存下来,这样就可以对比了,但是它不能一眼就看出来,我想可不可以这样,每次修改的时候,对比一下,增加了什么,修改了什么,删除了什么,把它记录下来,保存在备注这个字段里,但是该怎么对比呢????像这样行吗?还有别的其它的方法吗?
...全文
34 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjx1982 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 hejinhui1314 的回复:]
我以前听一个做过类似东西的人说过把差异的信息保存在xml中,好象要一定的算法之类的,具体实现方法就不清楚了
[/Quote]
有人听过,或知道这种算法吗????
chendejiang 2009-07-14
  • 打赏
  • 举报
回复
谁改的,改什么了,直接让他自己写到数据库就可以了
sql出来的语句也不通顺还不能表达真实的意思。不能什么事情都让计算机来做,有的事情人比计算机高效的多。
海会圣贤 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 defonds 的回复:]
个人觉得这种情况下使用触发器最能提高效率
先建个表,字段设置成“我要知道什么时候作过修改??修改过哪个地方??能把它记录下来”
然后把触发器安放在新闻表上

至于“我可以记录增加的时间,最后一次修改的时间,”直接从新表里边读取就是了
[/Quote]

9494
Tomzzu 2009-07-14
  • 打赏
  • 举报
回复
想法很棒, 不用把数据修改前后全部记录下来, 只要按时间顺序把新增,更新,删除的数据记录下来就行了
前后差别就是这段时间内的日志记录
当然日志表只少要有以下属性
时间, 操作方式(新增, 更新, 删除), 字段, 数据, 操作人等
zl3450341 2009-07-13
  • 打赏
  • 举报
回复
学习了
pandaoo1 2009-07-13
  • 打赏
  • 举报
回复
应该重做一张表的,不要在备注上面加
gaobaiy 2009-07-13
  • 打赏
  • 举报
回复
可以重新做一张专门存修改信息的表。定义修改新闻的类型,比如说删除,修改正文等,你可以按照业务的需要去定义。

当进行修改操作时,先查出原信息,然后用它和新的信息比较,将修改信息保存就行了
yanxinwudi 2009-07-13
  • 打赏
  • 举报
回复
有点难度,修改后还要保持原来的备份,那么就需要2个SQL语句才可以吧
b47248054 2009-07-13
  • 打赏
  • 举报
回复
针对文章修改的的记录我是这样做的:(特指新闻正文)
1。数据库中始终保存最新的内容(正文),还有个字段是记录历史信息的(我是把文章生成静态的html页面,这里记录我生成文件的物理地址)
2。当查看修改内容的时候,只要调出指定的文件,然后调用字符串比较或文件比较的方法。就可以了;
3。这样不仅仅可以比较前一次,而且可以比较任意版本。
4。这样做会占用一些物理空间,我会定时删除。


就是这么些了;
chinawomen 2009-07-13
  • 打赏
  • 举报
回复
数据库应该自带 这样的功能记录你更改数据的信息 请教下数据库的高手
puhongchun 2009-07-13
  • 打赏
  • 举报
回复
lZ 你看看数据结构


当你插入数据时候 你的这个日志表 就这样 "时间","新增","列名","空着","插入的新的信息",
当你修改数据时候 你的这个日志表 就这样 "时间","修改","列名","原来的信息","修改后的信息"
删除信息的时候 你的这个日志表 就这样 "时间","删除","列名","原来的信息","空着"

select * from logoTable where optionType="新增" and newInformation="插入的新的信息"

select * from logoTable where optionType="删除" and olaInformation="原来的信息"
chjx1982 2009-07-13
  • 打赏
  • 举报
回复
在哪个框内增加了哪几个字,删除了哪几个字,能捕捉到吗?
chjx1982 2009-07-13
  • 打赏
  • 举报
回复
是不是可以捕捉用户的动作呢,比如在修改的时候,用户修改了哪个地方,直接就能捕捉到,能吗?
puhongchun 2009-07-13
  • 打赏
  • 举报
回复
既然是log肯定信息很多啊,日志信息表,但是日志信息只保留一个星期就好了啊
zhaoxikuaile 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 puhongchun 的回复:]
我是这样想的 你既然要用日志 很好啊 创建日志表

LogoTable字段有这些:

time //这个时间不管是 增加 删除 修改 都用它

optionType //这个字段用来保存你是那种操作,是增加 呢 ,删除 还是修改

columnName //列名

olaInformation //原来的信息

newInformation // 新的信息

当你插入数据时候 你的这个日志表 就这样 "时间","新增","列名","空着","插入的新的信息",
当你修改数据时候 你的…
[/Quote]

这个方法可行!
why_java 2009-07-13
  • 打赏
  • 举报
回复
是个好想法,,但这样一来数据存储量就大了,.,.平凡的在数据库进行操作..
Jerry-He 2009-07-13
  • 打赏
  • 举报
回复
我以前听一个做过类似东西的人说过把差异的信息保存在xml中,好象要一定的算法之类的,具体实现方法就不清楚了
puhongchun 2009-07-13
  • 打赏
  • 举报
回复
你查询LogoTable不是很方便吗?

select * from LogoTable where opetionType='修改' and columnName="a" //这里的a是指 你的新闻信息表里的列的名字
puhongchun 2009-07-13
  • 打赏
  • 举报
回复
肯定是通过Sql语句了,

你在修改你的信息的表的时候,同时操作你的logoTable,

logoTable里 主要是增加数据 和查询啊,

因为你操作你的信息表的时候 总是要记录你的日志信息,
chjx1982 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 puhongchun 的回复:]
当然可以了

比如


当你修改数据时候 你的这个日志表 就这样 "2009-7-13","修改","a","123","456"


当你修改数据时候 你的这个日志表 就这样 "2009-7-14","修改","a","456","789"
[/Quote]
那怎么才知道修改过哪个地方呢,用代码,还是SQL????
加载更多回复(15)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧