2

データベースユーティリティのクエリ実行を使用して、Oracle SQL(10g)を試しています。

私の問題は、とを正常に実行した後でもCREATE TABLEINSERTデータインスペクターを開いたときにレコードが表示されないことです。

これが私が実行するものです:

DROP TABLE Customer;

CREATE TABLE Customer (
    CustomerNr INTEGER PRIMARY KEY,
    LastName    VARCHAR2(50),
    FirstName   VARCHAR2(50)
);

INSERT INTO Customer VALUES (1, 'Example', 'Joe');


テーブルは正しくリストされています。

ここに画像の説明を入力してください

スクリーンショット1

ただし、[データ]タブにはレコードが表示されません。 ここに画像の説明を入力してください スクリーンショット2

SELECT * FROM Customer;正常に実行できますが、何も返されません。

データベースから切断して再度接続すると、データが正しく読み込まれます。

SELECT * FROM Customer;挿入されたレコードも正しく返されるようになりました。

これはクエリ実行のバグですか?私は何か間違ったことをしていますか?これを修正するにはどうすればよいですか?

PS:画像を追加するという評判がないので、画像を含めるように投稿を編集してください。

4

1 に答える 1

2

データインスペクターは、作業を行っている場所とは異なるデータベースセッションで実行されているようです。DDLステートメント(のようなcreate table)は暗黙的なコミットを行うため、新しいテーブルはすぐにどこにでも表示されます。DMLステートメント(のようなinsert)は(通常、デフォルトでは、一部のクライアントは設定に基づいていますが)表示されないため、新しく挿入されたデータは他のセッションでは表示されません。

commitつまり、と同じセッションでを発行しinsertて表示します。

切断と再接続も暗黙的にコミットされます。そのため、データはそれを実行した後に表示されます。

于 2012-10-06T16:53:19.230 に答える