假设我在一个架构中的多个表中有一个名为partner
的列:
select table_name from information_schema.columns where column_name = 'partner';
如何将值partner = 100
的所有列更新为partner = 101
?
答案 0 :(得分:1)
对于一次性操作,执行动态SQL的DO
语句应该可以正常运行:
DO
$do$
DECLARE
_tbl text;
BEGIN
FOR _tbl IN
SELECT quote_ident(table_name) -- escape identifier!
FROM information_schema.columns
WHERE table_schema = 'public' -- your schema (!!)
AND column_name = 'partner' -- your column name
LOOP
RAISE NOTICE '%',
-- EXECUTE
'UPDATE ' || _tbl || ' SET partner = 101 WHERE partner = 100';
END LOOP;
END
$do$
在您发表评论RAISE
之前检查生成的代码并取消注释EXECUTE
。
这是相关答案中更多功能的大致简化版本,有更多解释:
信息架构或系统目录?