Files
relspecgo/pkg/writers/pgsql/templates/base_constraint.tmpl
T

39 lines
1.2 KiB
Cheetah

{{/* Base constraint template */}}
{{- define "constraint_base" -}}
ALTER TABLE {{qual_table .SchemaName .TableName}}
ADD CONSTRAINT {{quote_ident .ConstraintName}}
{{block "constraint_definition" .}}{{end}};
{{- end -}}
{{/* Drop constraint with check */}}
{{- define "drop_constraint_safe" -}}
DO {{dollar_delimiter}}
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.table_constraints
WHERE table_schema = {{quote .SchemaName}}
AND table_name = {{quote .TableName}}
AND constraint_name = {{quote .ConstraintName}}
) THEN
ALTER TABLE {{qual_table .SchemaName .TableName}}
DROP CONSTRAINT {{quote_ident .ConstraintName}};
END IF;
END;
{{dollar_delimiter}};
{{- end -}}
{{/* Add constraint with existence check */}}
{{- define "add_constraint_safe" -}}
DO {{dollar_delimiter}}
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.table_constraints
WHERE table_schema = {{quote .SchemaName}}
AND table_name = {{quote .TableName}}
AND constraint_name = {{quote .ConstraintName}}
) THEN
{{template "constraint_base" .}}
END IF;
END;
{{dollar_delimiter}};
{{- end -}}