【发布时间】:2021-02-26 17:49:35
【问题描述】:
我的表架构:
CREATE TABLE project_sectors(
sector_id int GENERATED ALWAYS AS IDENTITY,
sector_name varchar(256),
project_count int,
PRIMARY KEY (sector_id)
);
我正在尝试对具有某些特定列名的许多表执行查询:
DO $$
DECLARE
t text;
BEGIN
FOR t IN
SELECT table_name FROM information_schema.columns WHERE column_name = 'project_name'
LOOP
RAISE NOTICE 'INSERT METADATA FOR: %', t;
EXECUTE 'INSERT INTO project_sectors VALUES ($1, 0)'
USING t;
end loop;
end
$$ language 'plpgsql';
一旦我尝试运行我得到的查询:
[42804] 错误:列“sector_id”是整数类型,但表达式是文本类型提示:您需要重写或强制转换表达式。其中:PL/pgSQL function inline_code_block line 9 at EXECUTE
以前的 EXECUTE 语句是
EXECUTE format('INSERT INTO megaproject_sectors VALUES (''%I'', 0)', t)
我会得到错误
错误:整数类型的输入语法无效:“railway”
railway 是 t 的值。
为什么要向 GENERATED ALWAYS 列插入数据?
【问题讨论】:
标签: sql postgresql