3

HSQLDB 2.2.9 の GUI (hsqldb.jar) を使用して DB を作成しています。別のテキスト ファイルにすべての SQL コマンドがあります。したがって、DB を作成するには、テキストをコピーして HSQLDB エディターに貼り付け、[SQL を実行] ボタンをクリックします。CREATE TABLE「SQL 実行」ボタンを 1 回押してコマンドを実行し、その後「SQL 実行」ボタンを押してコマンドを実行するたびに、さまざまなリビジョンで DB を正常に作成しましたINSERT INTOCREATEこれは機能しますが、とINSERTコマンドの両方を同時に実行する方が便利です。これらを 1 つの「SQL 実行」に結合しようとしましたが、このエラーが発生し続けます。

user lacks privilege or object not found: SHOP / Error Code: -5501 / State: 42501

これが私が試したことです:

CREATE TABLE Shop (
    Id int NOT NULL IDENTITY, 
    Name varchar(255) NOT NULL, 
    UNIQUE (Name)
)

INSERT INTO Shop VALUES (
    NULL, 
    'Test Shop'
)

2 つの別々のステップで SQL を実行すると、このまったく同じコードが機能することに注意してください。とコマンドCOMMITの間に入れてみましたが、どちらも問題を解決しませんでした。先頭にも追加してみましたが、これも解決しませんでした。CREATEINSERTCHECKPOINTSET WRITE_DELAY FALSE

このコードを 1 ステップで機能させるには、何を追加する必要がありますか? ありがとう!

4

1 に答える 1

2

これは不可能です。

GUI クライアントは、ウィンドウ内のすべてのテキストをデータベース エンジンに送信します。エンジンは、ステートメントを実行する前にすべてのステートメントをコンパイルします。このため、ステートメントが前のステートメントの完了に依存している場合、そのステートメントはコンパイルされません。

スクリプトからデータベースに入力するより良い方法は、SqlTool.jar の一部である SqlFile ツールです。このツールは、ステートメントを 1 つずつ実行します。

別のガイドは次のとおりです。

http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html

于 2013-05-15T11:55:02.013 に答える