假设我在一个架构内的多个表中有一个名为partner
的列:
select table_name from information_schema.columns where column_name = 'partner';
如何将值 partner = 100
的所有列更新为 partner = 101
?
最佳答案
对于一次性操作,执行动态 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
之前检查生成的代码。
这是此相关答案中更通用功能的一个很大程度上简化的版本,并带有更多说明:
信息模式还是系统目录?
关于postgresql - 更新多个表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27527231/