select 'DO $$ BEGIN BEGIN ALTER TABLE '||relname||' ADD COLUMN recordyear int4; EXCEPTION WHEN duplicate_column THEN RAISE NOTICE ''column recordyear already exists''; END; END;$$;' as tabname from pg_class c where relkind = 'r' and relname like 'j%_r' and relname not like 'pg_%' and relname not like 'sql_%' order by relname; select 'update ' || relname || ' set recordyear=2019;' as sqlstr from pg_class c where relkind = 'r' and relname like 'j%_r' and relname not like 'pg_%' and relname not like 'sql_%' order by relname; -- 设置默认值 select 'DO $$ BEGIN BEGIN ALTER TABLE '||relname||' ALTER COLUMN recordyear SET DEFAULT 2020; EXCEPTION WHEN duplicate_column THEN RAISE NOTICE ''column recordyear already exists''; END; END;$$;' as tabname from pg_class c where relkind = 'r' and relname like 'j%_r' and relname not like 'pg_%' and relname not like 'sql_%' order by relname; -- 删除默认值 ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT; select 'alter table '||pg_class.relname || ' drop constraint '|| pg_constraint.conname ||';' as pk_name from pg_constraint inner join pg_class on pg_constraint.conrelid = pg_class.oid inner join pg_attribute on pg_attribute.attrelid = pg_class.oid and pg_attribute.attnum = pg_constraint.conkey[1] inner join pg_type on pg_type.oid = pg_attribute.atttypid where pg_attribute.attname='rowid' -- where pg_class.relname = 'teacher' and pg_constraint.contype='p'