DO $$ DECLARE current_default text; BEGIN SELECT pg_catalog.pg_get_expr(d.adbin, d.adrelid) INTO current_default FROM pg_attribute a JOIN pg_class t ON t.oid = a.attrelid JOIN pg_namespace n ON n.oid = t.relnamespace LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum WHERE n.nspname = '{{.SchemaName}}' AND t.relname = '{{.TableName}}' AND a.attname = '{{.ColumnName}}' AND a.attnum > 0 AND NOT a.attisdropped; {{- if .SetDefault }} IF current_default IS DISTINCT FROM {{quote .DefaultValue}} THEN ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} SET DEFAULT {{.DefaultValue}}; END IF; {{- else }} IF current_default IS NOT NULL THEN ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} DROP DEFAULT; END IF; {{- end }} END; $$;