背景:我的postgresql数据库中有一个模式,需要把这个模式下所有的表中字段类型为int2,in4,int8,numeric的字段默认值设置为0,通过编写存储过程的方式实现这一需求。
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'db_yw' --这里填写模式名称
AND (data_type = 'numeric' OR data_type like '%int%') --z需要修改的字段类型
AND column_name NOT IN ('pk_uid', 'id', 'l_id')
LOOP
EXECUTE 'ALTER TABLE ' || r.table_name || ' ALTER COLUMN ' || r.column_name || ' SET DEFAULT 0';
END LOOP;
END $$;
版权声明:本文为weixin_42101813原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。