0

トリガーを作成する DDL スクリプト (以下のソース) は、2 つのエラーで失敗します。

ステートメントが失敗しました、SQLSTATE = 42000 動的 SQL エラー -SQL エラー コード = -104 -コマンドの予期しない終了 - 行 3、列 44 ファイル C:\CRMDemo\Database\DDL\Trigger_Orders.sql の行 0 の後 ステートメントが失敗しました、SQLSTATE = 42000動的 SQL エラー -SQL エラー コード = -104 -トークンが不明 - 1 行目、1 列目 -end ファイル C:\CRMDemo\Database\DDL\Trigger_Orders.sql の 14 行目

(3 行目、44 列目は閉じ部分のように見えます)。エラー 42000 または -104 に関する情報が見つかりません。トリガーは、存在するジェネレーターからレコード番号を割り当てるように設計されています。このトリガーは、同じスクリプトから Interbase で正しく機能します。考えられる唯一のことは、返される値に対して列サイズ Integer が正しくないということです。しかし、ドキュメントによると、値は切り捨てられる可能性がありますが、期待値 (1) に対しては機能するはずです。

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS ACTIVE BEFORE INSERT POSITION 95 AS
begin
  NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1);
end;

Firebird は ver 2.5.2 で、ダウンロードしたばかりです。Windows 7。データベースは 32 ビットである必要があります。

4

1 に答える 1

3

isqlユーティリティを使用してステートメントを実行する場合は、 SET TERM演算子が使用されていることを確認してください。

SET TERM ^ ;

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS 
  ACTIVE 
  BEFORE INSERT 
  POSITION 95 
AS
begin
  NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1);
end
^

SET TERM ; ^
于 2012-12-02T21:19:20.773 に答える