-2

挿入時に次に高い文字フィールドをインクリメントする必要があります-たとえば、「007」が存在する場合、次は「008」です

私はストアドプロシージャを持っています:

BEGIN
    SELECT LPAD(CAST(MAX(Line_Order) AS SIGNED INTEGER) + 1,3,'0')
    FROM bill_project_lineitems 
    WHERE Item_Id = vItem;
END

次に、このトリガーがあります:

CALL MaxLineOrder(new.item_id,@new.line_order )

私は前に呼び出します。

INSERT を実行しようとすると、MySQL は1415 - 「トリガーから結果セットを返すことは許可されていません」と文句を言います。

では、どうすればこの問題を解決できますか?

4

1 に答える 1

1

わかりました、もう一度読みましたが、理解できなかったかもしれません。(しかし、完全なコードを貼り付けないのはなぜですか?) エラーは明らかです。トリガーから結果セットを返すことはできません。

を発行して結果セットを取得したいINSERTします。しかし、あなたはできません。したがって、次のことを行う必要があります。

  1. INSERTストアドプロシージャに移動します
  2. DROP引き金
  3. CALL手順。

ストアド プロシージャは結果セット (または多くの結果セット) を返すことができるため、これは機能します。これがあなたの望むものであることを願っています。

于 2013-05-20T01:20:20.640 に答える