39 lines
1.2 KiB
Cheetah
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 -}} |