Movatterモバイル変換


[0]ホーム

URL:



Facebook
Postgres Pro
Facebook
Downloads
8.18. Domain Types
Prev UpChapter 8. Data TypesHome Next

8.18. Domain Types#

Adomain is a user-defined data type that is based on anotherunderlying type. Optionally, it can have constraints that restrict its valid values to a subset of what the underlying type would allow. Otherwise it behaves like the underlying type — for example, any operator or function that can be applied to the underlying type will work on the domain type. The underlying type can be any built-in or user-defined base type, enum type, array type, composite type, range type, or another domain.

For example, we could create a domain over integers that accepts only positive integers:

CREATE DOMAIN posint AS integer CHECK (VALUE > 0);CREATE TABLE mytable (id posint);INSERT INTO mytable VALUES(1);   -- worksINSERT INTO mytable VALUES(-1);  -- fails

When an operator or function of the underlying type is applied to a domain value, the domain is automatically down-cast to the underlying type. Thus, for example, the result ofmytable.id - 1 is considered to be of typeinteger notposint. We could write(mytable.id - 1)::posint to cast the result back toposint, causing the domain's constraints to be rechecked. In this case, that would result in an error if the expression had been applied to anid value of 1. Assigning a value of the underlying type to a field or variable of the domain type is allowed without writing an explicit cast, but the domain's constraints will be checked.

For additional information seeCREATE DOMAIN.


Prev Up Next
8.17. Range Types Home 8.19. Object Identifier Types
pdfepub
Go to PostgreSQL 17
By continuing to browse this website, you agree to the use of cookies. Go toPrivacy Policy.

[8]ページ先頭

©2009-2025 Movatter.jp