Örnek - ENUM
Elimizde şöyle bir PostgreSQL tablosu olsun. Burada order_status isimli yeni bir type yarattık.
CREATE TYPE order_status AS ENUM(
'Ordered',
'Baking',
'Delivering',
'YummyInMyTummy');
CREATE TABLE pizza_order (
id INT PRIMARY KEY,
status order_status NOT NULL,
order_time TIMESTAMP NOT NULL DEFAULT now()
);
Şu SQL çalışır, çünkü status tipi olarak CREATE TYPE ile belirtilen bir string verdik> INSERT INTO pizza_order (id, status, order_time)
VALUES (1, 'Ordered', now());
VARCAHR ve ENUM arasında dönüşüm için bir cast yaratırız.
CREATE CAST (varchar AS order_status) WITH INOUT AS IMPLICIT;
Şöyle yaparız
CREATE TYPE address AS (
city TEXT,
address_line TEXT,
zip_code INT
);
Bu type'tan başka bir şey üretmek için şöyle yaparızCREATE DOMAIN address_domain AS address
check (
(value).city is not null and
(value).address_line is not null and
(value).zip_code is not null
);
Kullanmak için şöyle yaparız> CREATE TABLE test_address_domain (a address_domain);
CREATE TABLE
> INSERT INTO test_address_domain VALUES (('foo', 'bar', 11));
INSERT 0 1
> INSERT INTO test_address_domain VALUES (('foo', 'bar', null)); -- fails
ERROR: value for domain address_domain violates check constraint "address_domain_check"