【发布时间】:2012-03-26 04:05:31
【问题描述】:
如何在函数中使用数组插入表?
CREATE TABLE places
(
id SERIAL PRIMARY KEY
,location VARCHAR(100) NOT NULL
,timestamp TIMESTAMP
,person_id INTEGER NOT NULL REFERENCES people ON UPDATE...
);
CREATE TABLE people
(
id SERIAL PRIMARY KEY
,name VARCHAR(100) NOT NULL
);
我正在尝试做一个我想做的功能:
SELECT function(location_name, now(), '{1,2,3}');
这会将 3 条记录插入到数组中每个 person_id 的位置表中,具有相同的位置和时间戳。主要问题是数组的长度可以是动态的,所以函数应该可以处理:
SELECT function(location_name, now(), '{3,5,7,8,10}');
我不知道从哪里开始使 INSERT 动态化并从数组中提取 id。 Unest 可用于 DECLARE 中的 INSERT INTO 变量,但不能完成动态方面。我希望我说清楚了。
【问题讨论】:
标签: arrays function postgresql plpgsql