Sql 将数据插入表后,它不会';不显示新数据。为什么?

Sql 将数据插入表后,它不会';不显示新数据。为什么?,sql,oracle,Sql,Oracle,我使用的是Oracle数据库管理系统。我使用了标准的SQLINSERT查询 问题在于,即使插入成功,新插入的数据也不会显示在表中。当我重新启动计算机并再次打开应用程序时,数据就会显示出来 如何解决此问题?您应该在插入后使用 使用COMMIT语句结束当前事务,并永久更改事务中执行的所有更改。事务是Oracle数据库视为单个单元的SQL语句序列。此语句还将擦除事务中的所有保存点并释放事务锁 在提交事务之前: 通过查询修改后的表,您可以在会话中临时查看事务期间所做的任何更改,但其他用户无法查看这些更改

我使用的是Oracle数据库管理系统。我使用了标准的SQLINSERT查询

问题在于,即使插入成功,新插入的数据也不会显示在表中。当我重新启动计算机并再次打开应用程序时,数据就会显示出来

如何解决此问题?

您应该在插入后使用

使用COMMIT语句结束当前事务,并永久更改事务中执行的所有更改。事务是Oracle数据库视为单个单元的SQL语句序列。此语句还将擦除事务中的所有保存点并释放事务锁

在提交事务之前:

通过查询修改后的表,您可以在会话中临时查看事务期间所做的任何更改,但其他用户无法查看这些更改。提交事务后,在提交后执行的其他用户语句可以看到这些更改

您可以使用ROLLBACK状态回滚(撤消)事务期间所做的任何更改


最佳实践是使用
COMMIT每次创建、更新、删除、修改语句后。

提交您的工作。很可能在会话A提交事务之前,您插入了会话A并使用会话B(另一个窗口)进行了查询。Oracle不会向其他会话显示未提交的更改

Oracle不允许或不支持脏读。例如,Oracle中的读取未提交隔离级别与SQL Server的实现不同。在提交更改之前,您只能在执行更改的会话(事务)中看到更改

如果您查询了插入数据的同一会话中的数据,您就会看到数据。如果您是Oracle新手,则必须了解多版本并发控制(MVCC)及其与其他数据库体系结构的区别


至于你为什么在重启后看到数据?你没有提到你用的是什么“应用程序”。例如,当您退出SQLPlus时,它会自动提交。如果你想让每条语句自动提交,你可以使用“设置自动提交”,但这可能有点危险,因为你不能使用回滚来恢复错误的更改。

你在插入后是否进行了
提交
?为什么这个问题被标记为sql server?我不同意“每次创建、更新、删除、修改后使用提交的最佳实践。。。“实际上,这在很多情况下都有点危险,因为它会破坏事务点。@mrjoltcola:我的意思是,在会话结束时,如果使用任何这样的语句,就应该提交它!!您可以根据需要编辑我的答案。@user3728385:您可以通过单击此答案旁边的灰色勾号将其作为答案接受。