DO $$ DECLARE current_not_null boolean; BEGIN SELECT a.attnotnull INTO current_not_null FROM pg_attribute a JOIN pg_class t ON t.oid = a.attrelid JOIN pg_namespace n ON n.oid = t.relnamespace WHERE n.nspname = '{{.SchemaName}}' AND t.relname = '{{.TableName}}' AND a.attname = '{{.ColumnName}}' AND a.attnum > 0 AND NOT a.attisdropped; IF current_not_null IS NOT NULL AND current_not_null IS DISTINCT FROM {{.NotNull}} THEN {{- if .NotNull }} ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} SET NOT NULL; {{- else }} ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} DROP NOT NULL; {{- end }} END IF; END; $$;