Основное отличие TEMPLATE template1 от TEMPLATE template0 при создании базы данных в PostgreSQL заключается в их назначении:
- TEMPLATE template1 — это шаблон, на основе которого создаются новые базы данных. 1 Если добавить объекты в template1, то впоследствии они будут копироваться в новые базы данных. 1 Например, если в template1 установить процедурный язык PL/Perl, то он будет доступен в новых базах без дополнительных действий. 1
- TEMPLATE template0 — это исходная база, которая используется, когда нужно создать новую базу без каких-либо изменений, внесенных в шаблон template1, или же вернуть template1 в его изначальное состояние. 2 В template0 не следует вносить никакие изменения после инициализации кластера. 1
Также template0 необходима, если нужно внести изменения в кодировку или локаль создаваемой базы данных. 2 По умолчанию (при использовании template1) эти изменения невозможны. 2