私のような投稿がたくさんありましたが、自分の状況に適切な答えを見つけることができませんでした。私は拡張PostGIS 2.3を使用します。ここに私のコードは次のとおりです。あなたは私が使用していない変数「geometrie」を持って見ることができるように私は私が失敗し、使用するデータを含む変数を宣言しようとしたので、PostgreSQL 9.5:テーブル "new"のFROM句のエントリがありません
CREATE OR REPLACE FUNCTION public.split_cable()
RETURNS trigger AS
$BODY$
DECLARE geometrie geometry;
BEGIN
geometrie = new.geom;
create view temp_wire as (
with brs as (select boite.geom from cablage_pays_gex.boite
where st_intersects(boite.geom, new.geom) and boite.geom not in (select st_startpoint(st_linemerge(new.geom))) and boite.geom not in (select st_endpoint(st_linemerge(new.geom)))
)
select st_dump(st_split(new.geom, brs.geom)) from brs
);
RETURN new;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
、それがあります。私が得たエラーは、私の質問にタイトルを付けるもので、st_intersects()関数を指しています(初めてnew.geomを呼び出そうとしたとき)。私は間違って何をしていますか?そして私はこれをどのように解決することができますか?
EDIT:ここでトリガが演技しているcreate table文である:
CREATE TABLE public.cable2
(
id_cable integer NOT NULL DEFAULT nextval('cable2_seq'::regclass),
geom geometry(MultiLineString,2154),
CONSTRAINT cable2_pkey PRIMARY KEY (id_cable)
);
トリガーテーブルの 'create table'ステートメントを教えてください。しかし、トリガーでビューを作成することは、本当に**本当に悪い考えです。それは、元のテーブルの2番目のDMLステートメントの後で失敗します。つまり、DML文は1度しか実行できず、その後も実行することはできません。これは、その後のすべての文でエラーが発生するためです。 –
@a_horse_with_no_nameあなたが何を意味するのか分かりません。私は主にサードパーティのソフトウェアQGISを使用してdbとやりとりしていますので、私は文を使用していません。 'create trigger'文を意味しますか? –
その後、そのテーブルに対する最初のDML文の後にトリガが失敗するため、サードパーティのソフトウェアが動作を停止します。あなたのトリガーに何が間違っているかを知るには、トリガーを定義しているテーブルの 'create table'ステートメントを見る必要があります。 –