-- File: type_safety_2.sql -- Version: 1.1 -- Last Changed: 2017-02-09 -- by: Damir; https://www.damirsystems.com -- Project: Types and Typos in SQL -- Description: Part 2 -- DB: PostgreSQL CREATE TYPE currency AS ENUM ('USD', 'CAD', 'EUR', 'GBP'); -- CUR as text CREATE TABLE T1 ( TX integer NOT NULL , AMT decimal(19,2) NOT NULL , CUR char(3) NOT NULL -- <-- focus here , CONSTRAINT pk_T1 PRIMARY KEY (TX) ); -- CUR as enum CREATE TABLE T2 ( TX integer NOT NULL , AMT decimal(19,2) NOT NULL , CUR currency NOT NULL -- <-- focus here , CONSTRAINT pk_T2 PRIMARY KEY (TX) ); -- Same data for both tables -- INSERT INTO T1 VALUES (1, 10.0, 'USD') , (2, 13.0, 'CAD') , (3, 9.0, 'EUR') ; INSERT INTO T2 (TX, AMT, CUR) SELECT TX, AMT, CUR::currency FROM T1 ;