1

Firebird を DB として使用していますが、これを行う必要があります。

INSERT INTO TG (ID, UID, GID) 
    SELECT (INSERT INTO TBO VALUES (GEN_ID('o',1)) RETURNING ID), UID, 10 
    FROM TBL l 
    WHERE l.is=1 

私が使用するとき、選択のある部分はOKです:

SELECT (GEN_ID('o',1)), UID, 10 
    FROM TBL l 
    WHERE l.is=1 

IDしかし、最初に依存関係のために他のテーブルが必要です。

プロシージャーと呼ばれるものについては知っていますが、それらの使用方法がわかりません。SQL を使用してこれを行うオプションはありますか?

4

2 に答える 2

2

EXECUTE BLOCKステートメントを見てください。複数のステートメントを 1 つの「バッチ」で実行したり、1 つの SQL クエリに埋め込むことができない場合は複雑なロジックを記述したりできます。

EXECUTE BLOCK 内では、PSQLを使用して複数のコマンドを記述できます。

EB は、入力パラメーター、出力パラメーター (テーブルとして使用できます)、ローカル変数、if ステートメント、while、select などを許可します... 非常に強力なツールです。

ブロックを準備して、単純な SQL クエリのように実行するだけです。

于 2012-07-20T13:54:12.820 に答える
0

より簡単なアプローチは、トリガーを使用することです。この例では、挿入前のトリガーになります。このようなもの:

CREATE TRIGGER TG_BI0 FOR TABLE TG ACTIVE BEFORE INSERT 0
AS
BEGIN
    /* Before insert create a new record in TBO */
    INSERT INTO TBO (ID) VALUES (NEW.ID);
END

このトリガーを使用した後は、TG にレコードを挿入するだけです。

INSERT INTO TG (ID, UID, GID)
VALUES (GEN_ID('o',1), 'SOME_UUID', 10)
于 2012-07-23T08:14:37.047 に答える