我正在使用数据库实用程序执行查询来试验 Oracle SQL (10g)。
我的问题是,即使成功执行了
CREATE TABLE
和INSERT
,打开数据检查器时也不会显示记录。
这是我运行的:
DROP TABLE Customer;
CREATE TABLE Customer (
CustomerNr INTEGER PRIMARY KEY,
LastName VARCHAR2(50),
FirstName VARCHAR2(50)
);
INSERT INTO Customer VALUES (1, 'Example', 'Joe');
该表列出正确:
截图1
SELECT * FROM Customer;
可以执行成功,但是没有任何返回。
如果我断开与数据库的连接并再次连接,数据将正确加载。
SELECT * FROM Customer;
现在也可以正确返回插入的记录。
这是执行查询中的错误吗?难道我做错了什么?我可以尝试什么来解决这个问题?
PS:请编辑我的帖子以包含图像,因为我没有添加图像的声誉。
听起来数据检查器正在与您正在工作的地方不同的数据库会话中运行。 DDL 语句(如
create table
)执行隐式提交,因此新表将立即在任何地方可见。 DML 语句(如 insert
)不会(通常默认情况下,尽管有些客户端会基于设置),因此新插入的数据在任何其他会话中将不可见。
简而言之...在与
commit
相同的会话中发出 insert
以使其可见。
断开连接和重新连接也是隐式提交,这就是为什么数据在完成后可见。
DB::connection('DB1')->update("更新表 t1 SET t1.column_name = (从 DB2.TABLE2 t2 中选择列名,其中 t1.primary_id = t2.foreign_id)");
以我的 Oracle SQL 为例。请记住 DB::beingTranstion() 需要删除。