我需要更改架构中所有表的命名列(我们称之为“照片”)的数据类型。
例如:我有 300 个结构相同的表(当然每一行的数据除外)。 但我必须在每张桌子上将照片列中的 varchar(255) 更改为 (500)。 有没有办法不用遍历每个表并手动执行?
我尝试了在互联网上找到的所有内容。使用ChatGPT(一如既往没用)但无济于事。
一个示例,显然没有在您的实例上进行测试,因此首先在测试数据库上尝试。在
psql
中做:
BEGIN;
SELECT format('ALTER TABLE %s ALTER COLUMN photo TYPE varchar ;', pg.relname)
FROM
(
SELECT
relname
FROM
pg_class
WHERE
relnamespace = 'public'::regnamespace
AND
relkind = 'r'
) pg
\gexec
--COMMIT; or ROLLBACK; depending on outcome
将
relnamespace
值更改为您要更改其中的表的架构。