我希望我的應用程序的客戶端間接地或使用函數調用DELETE
語句。這是我的嘗試:如何在函數內部執行刪除語句
CREATE OR REPLACE FUNCTION layer_250_delete(layer_id integer)
RETURNS bool AS
$BODY$
BEGIN
EXECUTE 'DELETE FROM layer_250_ WHERE id = $1' USING layer_id;
RETURN TRUE;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION layer_250_delete(integer)
OWNER TO postgres;
我也嘗試了原始查詢:
...
DELETE FROM layer_250_ WHERE id = 1';
RETURN TRUE;
...
然而,當我調用這個函數(變體1或2)所示:
select layer_250_delete(1);
它不會從layer_250_
表中刪除一行。我在stackoverflow掃描了幾十個線程,但找不到類似於我的任務的任何內容。
結構
CREATE TABLE public.layer_250_
(
id integer NOT NULL DEFAULT nextval('layer_250__id_seq'::regclass),
feature_type character varying(100) NOT NULL,
feature_hash character varying(500) NOT NULL,
feature_uid character varying(100) NOT NULL,
geom geometry,
radius integer,
group_id integer,
object_id integer NOT NULL DEFAULT 0,
row_id integer NOT NULL DEFAULT 0,
action_time timestamp without time zone NOT NULL DEFAULT now(),
action_type character varying(255),
action_user_id integer,
action_user_ip character varying(255),
CONSTRAINT layer_250__pkey PRIMARY KEY (id),
CONSTRAINT layer_250__feature_uid_key UNIQUE (feature_uid),
CONSTRAINT enforce_dims_geom_layer_250_ CHECK (st_ndims(geom) = 2),
CONSTRAINT enforce_srid_geom_layer_250_ CHECK (st_srid(geom) = 3857)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.layer_250_
OWNER TO postgres;
份額的結構? '\ d + layer_250_' –
請看看 – Jacobian
如果你運行'begin;解釋(分析,緩衝)DELETE FROM layer_250_ WHERE id = 1; ROLLBACK; '?..任何例外?.. –