3

これが私の問題です、

私は:で手順を持っています

    DECLARE
serialvar INTEGER;

BEGIN
serialvar := NEW.battery_serial;

CREATE OR REPLACE VIEW battery_vue
AS
SELECT * FROM cells WHERE battery_serial = serialvar;
RETURN NEW;
END;

しかし、その手順のトリガーがアクティブになると、次のようなエラーが発生します。

エラー:列«serialvar»が存在しません

3行目:SELECT*FROMセルWHEREbattery_serial= serialVar

4

1 に答える 1

1

次のような動的SQLに値を渡す必要があります

BEGIN

EXECUTE $$CREATE OR REPLACE VIEW battery_vue
AS
SELECT * FROM cells WHERE battery_serial = $$ || NEW.battery_serial;

RETURN NEW;

END;

このようにして、新しい値を取得します。たとえば、値が1の場合は、 wherebattery_vueのみが表示されます。これは、あなたの望むことですか?(次の挿入など、ビューを再作成します。おそらく別のものを使用します。)cellsbattery_serial = 1battery_serial

于 2012-12-07T13:14:10.023 に答える