{"id":2072,"date":"2025-02-13T11:47:46","date_gmt":"2025-02-13T04:47:46","guid":{"rendered":"https:\/\/www.pgtutorial.com\/?page_id=2072"},"modified":"2025-03-07T13:45:50","modified_gmt":"2025-03-07T06:45:50","slug":"postgresql-enum","status":"publish","type":"page","link":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/","title":{"rendered":"PostgreSQL Enum"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='postgresql-enum-data-type-overview'>PostgreSQL Enum Data Type Overview <a href=\"#postgresql-enum-data-type-overview\" class=\"anchor\" id=\"postgresql-enum-data-type-overview\" title=\"Anchor for PostgreSQL Enum Data Type Overview\">#<\/a><\/h2>\n\n\n\n<p>PostgreSQL allows you to define a column that stores a list of fixed values using an enum.<\/p>\n\n\n\n<p>To create an enum, you use the <code>CREATE TYPE<\/code> statement with the following syntax:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TYPE<\/span> enum_name \n<span class=\"hljs-keyword\">AS \nENUM<\/span>(value1, value2, value3);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this syntax:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, provide enum&#8217;s name in the <code>CREATE TYPE<\/code> clause.<\/li>\n\n\n\n<li>Second, list values of the enum within the parentheses after the ENUM&nbsp;keyword. Enum values are case-sensitive. A value is lower than the value that appears after it and higher than before.<\/li>\n<\/ul>\n\n\n\n<p>To define a column with an enum type, you use the following syntax:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-built_in\">column_name<\/span> enum_name<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>column_name<\/code> can only store values defined in the <code>enum_name<\/code>. If you insert or update a value not in the list, PostgreSQL will issue an error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='postgresql-enum-data-type-example'>PostgreSQL enum data type example <a href=\"#postgresql-enum-data-type-example\" class=\"anchor\" id=\"postgresql-enum-data-type-example\" title=\"Anchor for PostgreSQL enum data type example\">#<\/a><\/h2>\n\n\n\n<p>First, create a new enum type called priority_type with three values: &#8216;low&#8217;, &#8216;medium&#8217;, and &#8216;high&#8217;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TYPE<\/span> priority_type <span class=\"hljs-keyword\">AS ENUM<\/span>(<span class=\"hljs-string\">'low'<\/span>, <span class=\"hljs-string\">'medium'<\/span>, <span class=\"hljs-string\">'high'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=Q1JFQVRFIFRZUEUgcHJpb3JpdHlfdHlwZSBBUyBFTlVNKCdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnKTs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Second, create a table called <code>transfer_orders<\/code> that has the <code>priority<\/code> column whose data type is <code>priority_type<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> transfer_orders (\n  id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">GENERATED<\/span> <span class=\"hljs-keyword\">ALWAYS<\/span> <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> <span class=\"hljs-keyword\">PRIMARY KEY<\/span>,\n  product_id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  from_warehouse <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  to_warehouse <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  quantity <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">CHECK<\/span> (quantity &gt; <span class=\"hljs-number\">0<\/span>),\n  priority priority_type <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span> <span class=\"hljs-keyword\">DEFAULT<\/span> <span class=\"hljs-string\">'medium'<\/span>\n);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=Q1JFQVRFIFRBQkxFIHRyYW5zZmVyX29yZGVycyAoIGlkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBwcm9kdWN0X2lkIElOVCBOT1QgTlVMTCwgZnJvbV93YXJlaG91c2UgSU5UIE5PVCBOVUxMLCB0b193YXJlaG91c2UgSU5UIE5PVCBOVUxMLCBxdWFudGl0eSBJTlQgQ0hFQ0sgKHF1YW50aXR5ID4gMCksIHByaW9yaXR5IHByaW9yaXR5X3R5cGUgTk9UIE5VTEwgREVGQVVMVCAnbWVkaXVtJyApOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Third, insert some rows into the <code>transfer_orders<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span>\n  transfer_orders (\n    product_id,\n    from_warehouse,\n    to_warehouse,\n    quantity,\n    priority\n  )\n<span class=\"hljs-keyword\">VALUES<\/span>\n  (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">50<\/span>, <span class=\"hljs-string\">'high'<\/span>),\n  (<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-string\">'low'<\/span>),\n  (<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-string\">'medium'<\/span>),\n  (<span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">30<\/span>, <span class=\"hljs-string\">'high'<\/span>)\n<span class=\"hljs-keyword\">RETURNING<\/span>\n  product_id,\n  from_warehouse,\n  to_warehouse,\n  quantity,\n  priority;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=SU5TRVJUIElOVE8gdHJhbnNmZXJfb3JkZXJzICggcHJvZHVjdF9pZCwgZnJvbV93YXJlaG91c2UsIHRvX3dhcmVob3VzZSwgcXVhbnRpdHksIHByaW9yaXR5ICkgVkFMVUVTICgxLCAxLCAyLCA1MCwgJ2hpZ2gnKSwgKDIsIDIsIDEsIDIwLCAnbG93JyksICgyLCAyLCAxLCAyMCwgJ21lZGl1bScpLCAoMywgMSwgMiwgMzAsICdoaWdoJykgUkVUVVJOSU5HIHByb2R1Y3RfaWQsIGZyb21fd2FyZWhvdXNlLCB0b193YXJlaG91c2UsIHF1YW50aXR5LCBwcmlvcml0eTs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\"> product_id | from_warehouse | to_warehouse | quantity | priority\n------------+----------------+--------------+----------+----------\n          1 |              1 |            2 |       50 | high\n          2 |              2 |            1 |       20 | low\n          2 |              2 |            1 |       20 | medium\n          3 |              1 |            2 |       30 | high<\/code><\/span><\/pre>\n\n\n<p>Fourth, retrieve transfer orders and sort them by <code>priority<\/code> from high to low:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">SELECT<\/span>\n  product_id,\n  from_warehouse,\n  to_warehouse,\n  quantity,\n  priority\n<span class=\"hljs-keyword\">FROM<\/span>\n  transfer_orders\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span>\n  priority <span class=\"hljs-keyword\">DESC<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIHByb2R1Y3RfaWQsIGZyb21fd2FyZWhvdXNlLCB0b193YXJlaG91c2UsIHF1YW50aXR5LCBwcmlvcml0eSBGUk9NIHRyYW5zZmVyX29yZGVycyBPUkRFUiBCWSBwcmlvcml0eSBERVNDOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Fifth, find transfer orders with the <code>high<\/code> priority: <\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">SELECT<\/span>\n  product_id,\n  from_warehouse,\n  to_warehouse,\n  quantity,\n  priority\n<span class=\"hljs-keyword\">FROM<\/span>\n  transfer_orders\n<span class=\"hljs-keyword\">WHERE<\/span>\n  priority = <span class=\"hljs-string\">'high'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIHByb2R1Y3RfaWQsIGZyb21fd2FyZWhvdXNlLCB0b193YXJlaG91c2UsIHF1YW50aXR5LCBwcmlvcml0eSBGUk9NIHRyYW5zZmVyX29yZGVycyBXSEVSRSBwcmlvcml0eSA9ICdoaWdoJzs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\"> product_id | from_warehouse | to_warehouse | quantity | priority\n------------+----------------+--------------+----------+----------\n          1 |              1 |            2 |       50 | high\n          3 |              1 |            2 |       30 | high<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='adding-new-values-to-enums'>Adding new values to enums <a href=\"#adding-new-values-to-enums\" class=\"anchor\" id=\"adding-new-values-to-enums\" title=\"Anchor for Adding new values to enums\">#<\/a><\/h2>\n\n\n\n<p>You can use the <code>ALTER TYPE<\/code> statement to add a new value to an existing enum with the following syntax:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">ALTER<\/span> <span class=\"hljs-keyword\">TYPE<\/span> enum_name\n<span class=\"hljs-keyword\">ADD<\/span> <span class=\"hljs-keyword\">VALUE<\/span> &#91;<span class=\"hljs-keyword\">IF<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">EXISTS<\/span>] new_value\n&#91;&#91;{<span class=\"hljs-keyword\">BEFORE<\/span> | <span class=\"hljs-keyword\">AFTER<\/span> } existing_value];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this syntax:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, provide the enum name you want to change in the <code>ALTER TYPE<\/code> clause.<\/li>\n\n\n\n<li>Second, specify the new value in the&nbsp;<code>ADD VALUE<\/code>&nbsp;clause. Use the&nbsp;<code>IF NOT EXISTS<\/code>&nbsp;to conditionally add a new value only if it does not exist.<\/li>\n\n\n\n<li>Third, define the new value&#8217;s position relative to an existing value. The default position is the end of the list.<\/li>\n<\/ul>\n\n\n\n<p>The following example uses the <code>ALTER TYPE<\/code> to add the urgent value to the <code>priority_type<\/code> enum:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">ALTER<\/span> <span class=\"hljs-keyword\">TYPE<\/span> priority_type\n<span class=\"hljs-keyword\">ADD<\/span> <span class=\"hljs-keyword\">VALUE<\/span> <span class=\"hljs-string\">'urgent'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=QUxURVIgVFlQRSBwcmlvcml0eV90eXBlIEFERCBWQUxVRSAndXJnZW50Jzs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='getting-enum-values'>Getting enum values <a href=\"#getting-enum-values\" class=\"anchor\" id=\"getting-enum-values\" title=\"Anchor for Getting enum values\">#<\/a><\/h2>\n\n\n\n<p>The <code>ENUM_RANGE()<\/code> function accepts an enum and returns the enum values as an array:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\">ENUM_RANGE(<span class=\"hljs-keyword\">null<\/span>::enum_name)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For example, the following returns all values of the <code>priority_type<\/code> enum:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">SELECT<\/span> ENUM_RANGE(<span class=\"hljs-keyword\">null<\/span>::priority_type) priority_values;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIEVOVU1fUkFOR0UoTlVMTDo6cHJpb3JpdHlfdHlwZSkgcHJpb3JpdHlfdmFsdWVzOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">     priority_values\n--------------------------\n {low,medium,high,urgent}<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='getting-the-first-and-last-values-of-an-enum'>Getting the first and last values of an enum <a href=\"#getting-the-first-and-last-values-of-an-enum\" class=\"anchor\" id=\"getting-the-first-and-last-values-of-an-enum\" title=\"Anchor for Getting the first and last values of an enum\">#<\/a><\/h2>\n\n\n\n<p>The <code>ENUM_FIRST<\/code> and <code>ENUM_LAST<\/code> functions return the first and last values of an enum:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">SELECT<\/span>\n  ENUM_FIRST(<span class=\"hljs-keyword\">NULL<\/span>::priority_type) first_priority,\n  ENUM_LAST(<span class=\"hljs-keyword\">NULL<\/span>::priority_type) last_priority;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIEVOVU1fRklSU1QoTlVMTDo6cHJpb3JpdHlfdHlwZSkgZmlyc3RfcHJpb3JpdHksIEVOVU1fTEFTVChOVUxMOjpwcmlvcml0eV90eXBlKSBsYXN0X3ByaW9yaXR5Ow%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"> first_priority | last_priority\n<span class=\"hljs-comment\">----------------+---------------<\/span>\n low            | urgent<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='renaming-an-enum-value'>Renaming an enum value <a href=\"#renaming-an-enum-value\" class=\"anchor\" id=\"renaming-an-enum-value\" title=\"Anchor for Renaming an enum value\">#<\/a><\/h2>\n\n\n\n<p>You can use the <code>ALTER TYPE ... RENAME VALUE<\/code> statement to change the value of an enum to the new one:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">ALTER<\/span> <span class=\"hljs-keyword\">TYPE<\/span> enum_name\n<span class=\"hljs-keyword\">RENAME<\/span> <span class=\"hljs-keyword\">VALUE<\/span> existing_value <span class=\"hljs-keyword\">TO<\/span> new_value;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following example changes &#8216;urgent&#8217; to &#8216;very high&#8217; for the priority_type column:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">ALTER<\/span> <span class=\"hljs-keyword\">TYPE<\/span> priority_type\n<span class=\"hljs-keyword\">RENAME<\/span> <span class=\"hljs-keyword\">VALUE<\/span> <span class=\"hljs-string\">'urgent'<\/span> <span class=\"hljs-keyword\">TO<\/span> <span class=\"hljs-string\">'very high'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIEVOVU1fRklSU1QoTlVMTDo6cHJpb3JpdHlfdHlwZSkgZmlyc3RfcHJpb3JpdHksIEVOVU1fTEFTVChOVUxMOjpwcmlvcml0eV90eXBlKSBsYXN0X3ByaW9yaXR5Ow%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='enum-vs-foreign-key'>Enum vs. Foreign key <a href=\"#enum-vs-foreign-key\" class=\"anchor\" id=\"enum-vs-foreign-key\" title=\"Anchor for Enum vs. Foreign key\">#<\/a><\/h2>\n\n\n\n<p>If you have a dynamic list of values, you should create a separate lookup table and set up a foreign key relationship between the main table and the lookup table.<\/p>\n\n\n\n<p>A lookup table allows adding or removing values without modifying the main table. However, the SQL can be complex to write and slightly slower due to the need to join the two tables.<\/p>\n\n\n\n<p>First, create a table called <code>priorities<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> priorities (\n  id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">GENERATED<\/span> <span class=\"hljs-keyword\">ALWAYS<\/span> <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> <span class=\"hljs-keyword\">PRIMARY KEY<\/span>,\n  priority <span class=\"hljs-type\">VARCHAR<\/span>(<span class=\"hljs-number\">255<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>\n);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=Q1JFQVRFIFRBQkxFIHByaW9yaXRpZXMgKCBpZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgcHJpb3JpdHkgVkFSQ0hBUigyNTUpIE5PVCBOVUxMICk7\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Second, insert rows into the <code>priorities<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span>\n  priorities (priority)\n<span class=\"hljs-keyword\">VALUES<\/span>\n  (<span class=\"hljs-string\">'low'<\/span>),\n  (<span class=\"hljs-string\">'medium'<\/span>),\n  (<span class=\"hljs-string\">'high'<\/span>)\n<span class=\"hljs-keyword\">RETURNING<\/span>\n  *;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=SU5TRVJUIElOVE8gcHJpb3JpdGllcyAocHJpb3JpdHkpIFZBTFVFUyAoJ2xvdycpLCAoJ21lZGl1bScpLCAoJ2hpZ2gnKSBSRVRVUk5JTkcgKjs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\"> id | priority\n----+----------\n  1 | low\n  2 | medium\n  3 | high<\/code><\/span><\/pre>\n\n\n<p>Third, drop the <code>transfer_orders<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">DROP<\/span> <span class=\"hljs-keyword\">TABLE<\/span> <span class=\"hljs-keyword\">IF<\/span> <span class=\"hljs-keyword\">EXISTS<\/span> transfer_orders;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=RFJPUCBUQUJMRSBJRiBFWElTVFMgdHJhbnNmZXJfb3JkZXJzOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Fourth, recreate a <code>transfer_orders<\/code> table that has the <code>priority<\/code> column linked to the <code>priorities<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> transfer_orders (\n  id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">GENERATED<\/span> <span class=\"hljs-keyword\">ALWAYS<\/span> <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> <span class=\"hljs-keyword\">PRIMARY KEY<\/span>,\n  product_id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  from_warehouse <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  to_warehouse <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  quantity <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">CHECK<\/span> (quantity &gt; <span class=\"hljs-number\">0<\/span>),\n  priority_id <span class=\"hljs-type\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-keyword\">NULL<\/span>,\n  <span class=\"hljs-keyword\">FOREIGN KEY<\/span> (priority_id) <span class=\"hljs-keyword\">REFERENCES<\/span> priorities (id) <span class=\"hljs-keyword\">ON<\/span> <span class=\"hljs-keyword\">DELETE<\/span> <span class=\"hljs-keyword\">CASCADE<\/span> <span class=\"hljs-keyword\">ON<\/span> <span class=\"hljs-keyword\">UPDATE<\/span> <span class=\"hljs-keyword\">CASCADE<\/span>\n);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=Q1JFQVRFIFRBQkxFIHRyYW5zZmVyX29yZGVycyAoIGlkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBwcm9kdWN0X2lkIElOVCBOT1QgTlVMTCwgZnJvbV93YXJlaG91c2UgSU5UIE5PVCBOVUxMLCB0b193YXJlaG91c2UgSU5UIE5PVCBOVUxMLCBxdWFudGl0eSBJTlQgQ0hFQ0sgKHF1YW50aXR5ID4gMCksIHByaW9yaXR5X2lkIElOVCBOT1QgTlVMTCwgRk9SRUlHTiBLRVkgKHByaW9yaXR5X2lkKSBSRUZFUkVOQ0VTIHByaW9yaXRpZXMgKGlkKSBPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERSApOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Fifth, insert rows into the <code>transfer_orders<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span>\n  transfer_orders (\n    product_id,\n    from_warehouse,\n    to_warehouse,\n    quantity,\n    priority_id \n  )\n<span class=\"hljs-keyword\">VALUES<\/span>\n  (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">50<\/span>, <span class=\"hljs-number\">3<\/span>),\n  (<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-number\">1<\/span>),\n  (<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-number\">2<\/span>),\n  (<span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">30<\/span>, <span class=\"hljs-number\">3<\/span>)\n<span class=\"hljs-keyword\">RETURNING<\/span>\n  product_id,\n  from_warehouse,\n  to_warehouse,\n  quantity,\n  priority_id ;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=SU5TRVJUIElOVE8gdHJhbnNmZXJfb3JkZXJzICggcHJvZHVjdF9pZCwgZnJvbV93YXJlaG91c2UsIHRvX3dhcmVob3VzZSwgcXVhbnRpdHksIHByaW9yaXR5ICkgVkFMVUVTICgxLCAxLCAyLCA1MCwgMyksICgyLCAyLCAxLCAyMCwgMSksICgyLCAyLCAxLCAyMCwgMiksICgzLCAxLCAyLCAzMCwgMykgUkVUVVJOSU5HIHByb2R1Y3RfaWQsIGZyb21fd2FyZWhvdXNlLCB0b193YXJlaG91c2UsIHF1YW50aXR5LCBwcmlvcml0eTs%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\"> product_id | from_warehouse | to_warehouse | quantity | priority_id\n------------+----------------+--------------+----------+-------------\n          1 |              1 |            2 |       50 |           3\n          2 |              2 |            1 |       20 |           1\n          2 |              2 |            1 |       20 |           2\n          3 |              1 |            2 |       30 |           3<\/code><\/span><\/pre>\n\n\n<p>Finally, query data from the <code>transfer_orders<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"><span class=\"hljs-keyword\">SELECT<\/span>\n  product_id,\n  from_warehouse,\n  to_warehouse,\n  quantity,\n  priority\n<span class=\"hljs-keyword\">FROM<\/span>\n  transfer_orders\n  <span class=\"hljs-keyword\">INNER<\/span> <span class=\"hljs-keyword\">JOIN<\/span> priorities <span class=\"hljs-keyword\">ON<\/span> priorities.id = transfer_orders.priority_id\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span>\n  priority <span class=\"hljs-keyword\">DESC<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><a href=\"https:\/\/www.pgtutorial.com\/playground\/?q=U0VMRUNUIHByb2R1Y3RfaWQsIGZyb21fd2FyZWhvdXNlLCB0b193YXJlaG91c2UsIHF1YW50aXR5LCBwcmlvcml0eSBGUk9NIHRyYW5zZmVyX29yZGVycyBJTk5FUiBKT0lOIHByaW9yaXRpZXMgT04gcHJpb3JpdGllcy5pZCA9IHRyYW5zZmVyX29yZGVycy5wcmlvcml0eV9pZCBPUkRFUiBCWSBwcmlvcml0eSBERVNDOw%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Try it<\/a><\/p>\n\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"PostgreSQL SQL dialect and PL\/pgSQL\" data-shcb-language-slug=\"pgsql\"><span><code class=\"hljs language-pgsql\"> product_id | from_warehouse | to_warehouse | quantity | priority\n<span class=\"hljs-comment\">------------+----------------+--------------+----------+----------<\/span>\n          <span class=\"hljs-number\">2<\/span> |              <span class=\"hljs-number\">2<\/span> |            <span class=\"hljs-number\">1<\/span> |       <span class=\"hljs-number\">20<\/span> | medium\n          <span class=\"hljs-number\">2<\/span> |              <span class=\"hljs-number\">2<\/span> |            <span class=\"hljs-number\">1<\/span> |       <span class=\"hljs-number\">20<\/span> | low\n          <span class=\"hljs-number\">1<\/span> |              <span class=\"hljs-number\">1<\/span> |            <span class=\"hljs-number\">2<\/span> |       <span class=\"hljs-number\">50<\/span> | high\n          <span class=\"hljs-number\">3<\/span> |              <span class=\"hljs-number\">1<\/span> |            <span class=\"hljs-number\">2<\/span> |       <span class=\"hljs-number\">30<\/span> | high<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PostgreSQL SQL dialect and PL\/pgSQL<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">pgsql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='summary'>Summary <a href=\"#summary\" class=\"anchor\" id=\"summary\" title=\"Anchor for Summary\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An enum is a custom data type with a fixed list of values.<\/li>\n\n\n\n<li>Use the&nbsp;<code>CREATE TYPE<\/code>&nbsp;statement to create a new enum.<\/li>\n\n\n\n<li>Use the&nbsp;<code>ALTER TYPE ... ADD VALUE<\/code> statement&nbsp;to add a new value to an enum.<\/li>\n\n\n\n<li>Use the&nbsp;<code>ALTER TYPE ... RENAME VALUE<\/code>&nbsp;to rename an enum value.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id='quiz'>Quiz <a href=\"#quiz\" class=\"anchor\" id=\"quiz\" title=\"Anchor for Quiz\">#<\/a><\/h2>\n\n\n\n<iframe loading=\"lazy\"\n  name=\"quiz\"\n  src=\"\/quiz\/?quiz=enum\"\n  height=\"700\"\n  width=\"600\"\n  class=\"iframe\"\n><\/iframe>\n\n\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"2072\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/\"\n\t\t\t\tdata-post-title=\"PostgreSQL Enum\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"2072\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/\"\n\t\t\t\tdata-post-title=\"PostgreSQL Enum\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you&#8217;ll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":13,"menu_order":94,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2072","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PostgreSQL Enum<\/title>\n<meta name=\"description\" content=\"In this tutorial, you&#039;ll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL Enum\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, you&#039;ll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/\" \/>\n<meta property=\"og:site_name\" content=\"PostgreSQL Tutorial\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-07T06:45:50+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pgtutorial.com\\\/postgresql-tutorial\\\/postgresql-enum\\\/\",\"url\":\"https:\\\/\\\/www.pgtutorial.com\\\/postgresql-tutorial\\\/postgresql-enum\\\/\",\"name\":\"PostgreSQL Enum\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pgtutorial.com\\\/#website\"},\"datePublished\":\"2025-02-13T04:47:46+00:00\",\"dateModified\":\"2025-03-07T06:45:50+00:00\",\"description\":\"In this tutorial, you'll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pgtutorial.com\\\/postgresql-tutorial\\\/postgresql-enum\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pgtutorial.com\\\/postgresql-tutorial\\\/postgresql-enum\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pgtutorial.com\\\/postgresql-tutorial\\\/postgresql-enum\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pgtutorial.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL Tutorial\",\"item\":\"https:\\\/\\\/www.pgtutorial.com\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PostgreSQL Enum\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pgtutorial.com\\\/#website\",\"url\":\"https:\\\/\\\/www.pgtutorial.com\\\/\",\"name\":\"PostgreSQL Tutorial\",\"description\":\"Learn PostgreSQL from Scratch\",\"alternateName\":\"PostgreSQL\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pgtutorial.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PostgreSQL Enum","description":"In this tutorial, you'll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL Enum","og_description":"In this tutorial, you'll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.","og_url":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/","og_site_name":"PostgreSQL Tutorial","article_modified_time":"2025-03-07T06:45:50+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/","url":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/","name":"PostgreSQL Enum","isPartOf":{"@id":"https:\/\/www.pgtutorial.com\/#website"},"datePublished":"2025-02-13T04:47:46+00:00","dateModified":"2025-03-07T06:45:50+00:00","description":"In this tutorial, you'll learn how to use the PostgreSQL enum data type to define a list of fixed values for a column.","breadcrumb":{"@id":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.pgtutorial.com\/postgresql-tutorial\/postgresql-enum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pgtutorial.com\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL Tutorial","item":"https:\/\/www.pgtutorial.com\/"},{"@type":"ListItem","position":3,"name":"PostgreSQL Enum"}]},{"@type":"WebSite","@id":"https:\/\/www.pgtutorial.com\/#website","url":"https:\/\/www.pgtutorial.com\/","name":"PostgreSQL Tutorial","description":"Learn PostgreSQL from Scratch","alternateName":"PostgreSQL","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pgtutorial.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/pages\/2072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/comments?post=2072"}],"version-history":[{"count":6,"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/pages\/2072\/revisions"}],"predecessor-version":[{"id":2268,"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/pages\/2072\/revisions\/2268"}],"up":[{"embeddable":true,"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/pages\/13"}],"wp:attachment":[{"href":"https:\/\/www.pgtutorial.com\/wp-json\/wp\/v2\/media?parent=2072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}