解析Sql :从update 语句中解析出select语句

yuna@liu 2016-04-01 05:43:11
现在有一个任务,有一批的命令,都是update ,insert,delete 的批操作。
还有一个要求,在执行操作时需要记录下更新数据的历史状态。

例如:
update tab1 set col='**',col2='***' where id in (select tid from tab2 where enable='Y
')

我的处理是这样的:
1.首先解析后得到:
 select * from tab1   where id in (select tid from tab2 where enable='Y')


2.执行select 将历史数据保存到另外的地方。

3.执行update 命令

问题是,
我要怎么解析出这个select语句呢?
语句不算太复杂,都是单句语句。
那么亲,能提供好办法吗?
...全文
344 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
姎楹 2020-01-14
  • 打赏
  • 举报
回复
写事务,更新 删除,新增先备份到备份表
一支糖包仔 2020-01-14
  • 打赏
  • 举报
回复
滚奥,才发现是好几年前的坟贴。
一支糖包仔 2020-01-14
  • 打赏
  • 举报
回复
引用 楼主 yuna@liu 的回复:
现在有一个任务,有一批的命令,都是update ,insert,delete 的批操作。 还有一个要求,在执行操作时需要记录下更新数据的历史状态。
这个需求,如果update实际上是添加一条新数据,查看的时候就是看最新这一条,历史就是前几条。这样会不会好一点呢?
付玉超 2020-01-14
  • 打赏
  • 举报
回复
老铁 你们这个功能怎么实现的
yuna@liu 2016-04-06
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
不就是解析出 where 子句吗? 但你举例中有 insert,插入指令是没有 where 子句的,届时你打算如何处理?
insert 的就不需要解析了, 而且我想先把update 、delete 类型的sql 解析出来再看Update的。 而且从update 中解析出 where 子句,也不是那么容易吧,还是要考虑语句的多样性的
xuzuning 2016-04-01
  • 打赏
  • 举报
回复
不就是解析出 where 子句吗? 但你举例中有 insert,插入指令是没有 where 子句的,届时你打算如何处理?

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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