oracle在update、delete、和inset操作后,要commit操作

在oracle中使用sql语句执行了delete和update和insert命令,在本地数据库中已执行成功查看并没有删除成功或更新数据库,很是尴尬,为什么会出现这种不一致的情况呢?

    原来是因为我执行命令后没有commit提交,那么更新的内容只是被保存到内存中,而不是提交到数据库中,将不会被其他Session(对话)看到,其他对话看到的是更新前的数据。当用户退出对话时,Oracle才会自动commit。

SQL语言分为五大类:
DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。

DQL(数据查询语言)- Select查询语句不存在提交问题。

DML(数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。

DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。

DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。

执行完DML语句,若没有commit再执行DDL语句,也会自动commit未被commit的数据。

如果打开自动提交,DML操作后也不需要手动提交:SET AUTOCOMMIT ON;
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值