27 lines
799 B
Cheetah
27 lines
799 B
Cheetah
DO {{dollar_delimiter}}
|
|
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 = {{quote .SchemaName}}
|
|
AND t.relname = {{quote .TableName}}
|
|
AND a.attname = {{quote .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;
|
|
{{dollar_delimiter}};
|