判断数据是否作了修改。

liuyjcel 2011-10-10 04:28:56
我在数据库了取了一条记录出来,后就点击“保存”(Update操作)
怎么判断点保存后,数据与之前有差异。
...全文
386 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
摩羯伙夫 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 liuyjcel 的回复:]
引用 13 楼 lhnlyy520 的回复:
我一般在做数据表设计的时候会有一个“更新日期”,然后每次对记录更新时都修改这个字段为最新日期,精确到秒。
修改前先取出这个时间,修改提交时再比较一下这个时间和之前取出的有没有变化,要是有变化说明已被更新。

我是需要查看是否修改了内容的。
而不是查看是否进行了修改操作,两个有本质的区别。
[/Quote]

每一个操作都更新“更新日期” 那么这个日期肯定就是最新的呀,只要日期不一样就认为内容被更新了
摩羯伙夫 2011-10-14
  • 打赏
  • 举报
回复
数据库中存储一个时间字段,一般UpdateTime,保存时从数据库中取出UpdateTime与先前取出的UpdateTime进行比较,但是对记录的每一个操作都必须将当前服务器的时候更新到UpdateTime
liuyjcel 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lhnlyy520 的回复:]
我一般在做数据表设计的时候会有一个“更新日期”,然后每次对记录更新时都修改这个字段为最新日期,精确到秒。
修改前先取出这个时间,修改提交时再比较一下这个时间和之前取出的有没有变化,要是有变化说明已被更新。
[/Quote]
我是需要查看是否修改了内容的。
而不是查看是否进行了修改操作,两个有本质的区别。
地菜 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lhnlyy520 的回复:]

我一般在做数据表设计的时候会有一个“更新日期”,然后每次对记录更新时都修改这个字段为最新日期,精确到秒。
修改前先取出这个时间,修改提交时再比较一下这个时间和之前取出的有没有变化,要是有变化说明已被更新。
[/Quote]
是个不错的解决方案
1800包吃包住 2011-10-12
  • 打赏
  • 举报
回复
保存的时候用Datable保存数据 与开始绑定的数据源进行比较
lhnlyy520 2011-10-12
  • 打赏
  • 举报
回复
我一般在做数据表设计的时候会有一个“更新日期”,然后每次对记录更新时都修改这个字段为最新日期,精确到秒。
修改前先取出这个时间,修改提交时再比较一下这个时间和之前取出的有没有变化,要是有变化说明已被更新。
地菜 2011-10-12
  • 打赏
  • 举报
回复
update语句执行后,会返回一个受影响的行数 ,如果是 0,说明数据没被修改
大于0 ,说明数据被修改了,与之前有差异

不过上面这句话有个很大的前提:

update语句的where 分支里面 要列出所有要修改字段 的强制原始值条件 :

例如 :where id = 23 and name ='fefe' and sex = 0 and age =4
liuyjcel 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 insus 的回复:]
数据有一个触发器,
http://www.cnblogs.com/insus/articles/1692418.html
http://www.cnblogs.com/insus/articles/1916558.html
http://www.cnblogs.com/insus/articles/1918242.html
[/Quote]
我这里是一组数据,而且因为页面的不 同,每组数据的个数也不同。
liuyjcel 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dingzongyinnihao 的回复:]
那你就判断下,然后修改哎!
[/Quote]

这个我知道。主要是因为这样的判断太多,页面太多,如果每次都使用这样的方法去判断的话,那真的太复杂。
  • 打赏
  • 举报
回复
那你就判断下,然后修改哎!
liuyjcel 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zzk87 的回复:]
楼主是不是 希望 更新的时候不更新某些一样的字段??
如果是这样。。你可以在保存的时候 读取老数据放到 实体对象 中。。然后将修改的值 付给读取到的 实体对象。然后修改实体对象。。。这样。没有赋给实体对象的值更新到数据库中还是原来的数据。
[/Quote]

不是的,我希望是把修改前后的值保存到另一张表中。
如 表的结构如下:
工号 姓名 年龄 。。。
001 张三 30

我把姓名“张三”,修改为“李四”后,就把这两个数据保存到日志文件中,否则如果没有修改,则不做保存记录。
周煜皓 2011-10-10
  • 打赏
  • 举报
回复
楼主是不是 希望 更新的时候不更新某些一样的字段??
如果是这样。。你可以在保存的时候 读取老数据放到 实体对象 中。。然后将修改的值 付给读取到的 实体对象。然后修改实体对象。。。这样。没有赋给实体对象的值更新到数据库中还是原来的数据。
liuyjcel 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 return_false 的回复:]
其实 ,像这种操作完全可以早发现,早处理

保存前,先拿数据库里的值与即将提交的值 对比一下
[/Quote]

其实我也知道先比对。。
但如果这些数据过多,每个都这样去比对的话,那就太复杂了。
  • 打赏
  • 举报
回复
其实 ,像这种操作完全可以早发现,早处理

保存前,先拿数据库里的值与即将提交的值 对比一下
格桑花 2011-10-10
  • 打赏
  • 举报
回复
DataSet ds2 = DM_Static.GetData("SELECT * FROM sbzc_yfxwh WHERE id=" + Sid);//这里是读取修改前的数据
string updateset2 = "";
if (ds2.Tables[0].Rows[0]["维护编码"].ToString() != swhbm)//对修改前后的数据进行比较
{
updateset2 += (updateset2 == "" ? "" : ",") + "维护编码=" + DM_Static.String2Database(swhbm, 0);
}
格桑花 2011-10-10
  • 打赏
  • 举报
回复
你在更新之前将数据保存到全局变量里面,在点击保存时判断两个值是否相等
mrchuei 2011-10-10
  • 打赏
  • 举报
回复
遇到过,没解决过

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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