{"id":6289,"date":"2023-05-08T12:01:00","date_gmt":"2023-05-08T12:01:00","guid":{"rendered":"https:\/\/www.dbvis.com\/?p=6289"},"modified":"2024-07-05T08:55:28","modified_gmt":"2024-07-05T07:55:28","slug":"understanding-postgresql-data-integrity","status":"publish","type":"post","link":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/","title":{"rendered":"Understanding PostgreSQL Data Integrity"},"content":{"rendered":"\n<div class=\"wp-block-group has-black-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:40px\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-05153d0\" data-block-id=\"05153d0\"><style>.stk-05153d0{max-width:672px !important;margin-right:auto !important;margin-left:auto !important}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-05153d0-column alignwide\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-0ae88f8\" data-v=\"4\" data-block-id=\"0ae88f8\"><style>.stk-0ae88f8-container{max-width:600px !important;margin-right:auto !important;margin-left:auto !important}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-0ae88f8-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-0ae88f8-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-68a9012 stk-subtitle\" data-block-id=\"68a9012\"><style>.stk-68a9012 .stk-block-text__text{font-size:14px !important;color:#7B7B7B !important;font-family:\"jetbrainsmono\",Sans-serif !important}@media screen and (max-width:1199px){.stk-68a9012 .stk-block-text__text{font-size:14px !important}}<\/style><p class=\"stk-block-text__text has-text-color\">intro<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-a8f1ca9\" data-block-id=\"a8f1ca9\"><style>.stk-a8f1ca9 .stk-block-text__text{font-size:16px !important;color:#ffffff !important;font-family:\"authenticsans\",Sans-serif !important}@media screen and (max-width:1199px){.stk-a8f1ca9 .stk-block-text__text{font-size:16px !important}}<\/style><p class=\"stk-block-text__text has-text-color has-white-color\">Let\u2019s explore what tools PostgreSQL offers to enforce data integrity. Follow this tutorial and become an expert on PostgreSQL constraints!<\/p><\/div>\n\n\n<section class=\"thetableTools thetableTools__wrapper\">\n    <div class=\"thetableTools thetableTools__container\">\n        <span class=\"thetableTools thetableTools__subhead\">Tools used in the tutorial<\/span>\n        <div class=\"thetableTools thetableTools__table\">\n            <div class=\"thetableTools thetableTools__divider\"><\/div>\n            <div class=\"thetableTools thetableTools__headers\">\n                <span class=\"thetableTools thetableTools__header thetableTools__header--name\">Tool<\/span>\n                <span class=\"thetableTools thetableTools__header thetableTools__header--description\">Description<\/span>\n                <span class=\"thetableTools thetableTools__header thetableTools__header--link\">Link<\/span>\n            <\/div>\n                                <div class=\"thetableTools thetableTools__divider\"><\/div>\n                    <div class=\"thetableTools thetableTools__tool\">\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--name\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--icon\"><img decoding=\"async\" width=\"40\" height=\"40\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/dbvis_logo_nopadding-42x42.png\" class=\"attachment-40x40 size-40x40\" alt=\"Dbvisualizer\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/dbvis_logo_nopadding-42x42.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/dbvis_logo_nopadding.png 50w\" sizes=\"(max-width: 40px) 100vw, 40px\" \/><\/span>\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--name\">DBVISUALIZER<\/span>\n                        <\/div>\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--description\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--description\">TOP RATED DATABASE MANAGEMENT TOOL AND SQL CLIENT\r\n<\/span>\n                        <\/div>\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--link\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--link\">\n                                <a href=\"https:\/\/www.dbvis.com\/download\/\" class=\"ctaBlock ctaBlock__ctaLink ctaBlock__ctaLink--internal\">DOWNLOAD<\/a>\n                            <\/span>\n                        <\/div>\n                    <\/div>                                <div class=\"thetableTools thetableTools__divider\"><\/div>\n                    <div class=\"thetableTools thetableTools__tool\">\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--name\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--icon\"><img decoding=\"async\" width=\"40\" height=\"40\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/postgres-1-42x42.png\" class=\"attachment-40x40 size-40x40\" alt=\"PostgreSQL logo\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/postgres-1-42x42.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/09\/postgres-1.png 100w\" sizes=\"(max-width: 40px) 100vw, 40px\" \/><\/span>\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--name\">POSTGRESQL<\/span>\n                        <\/div>\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--description\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--description\">THE POSTGRESQL DATABASE<\/span>\n                        <\/div>\n                        <div class=\"thetableTools thetableTools__col thetableTools__col--link\">\n                            <span class=\"thetableTools thetableTools__content thetableTools__content--link\">\n                                <a href=\"https:\/\/www.postgresql.org\/\" target=\"_blank\" rel=\"noopener\" class=\"ctaBlock ctaBlock__ctaLink ctaBlock__ctaLink--out\">POSTGRESQL<\/a>\n                            <\/span>\n                        <\/div>\n                    <\/div>                        <div class=\"thetableTools thetableTools__divider\"><\/div>\n        <\/div>\n    <\/div>\n<\/section>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-45e7700\" data-block-id=\"45e7700\"><style>.stk-45e7700{margin-top:112px !important;margin-bottom:0px !important}.stk-45e7700-column{max-width:672px !important;justify-content:center !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-45e7700-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-07bb08b\" data-v=\"4\" data-block-id=\"07bb08b\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-07bb08b-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-07bb08b-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-7d6e6cd\" data-block-id=\"7d6e6cd\"><p class=\"stk-block-text__text\">One of the main features offered by relational databases is data integrity, which ensures that the data contained in the database is reliable and consistent. In PostgreSQL, data integrity is enforced through data types, triggers, and constraints. The latter ones are the most powerful tools when it comes to data integrity and includes the popular NOT NULL and FOREIGN KEY constraints.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-207aab5\" data-block-id=\"207aab5\"><p class=\"stk-block-text__text\">In this article, you will find out what is data integrity and how to ensure it in Postgres. You will see what the most common PostgreSQL constraints are in detail and how and when to use them.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-ba6e8a4\" data-block-id=\"ba6e8a4\"><p class=\"stk-block-text__text\">Let\u2019s dig into PostgreSQL data integrity!<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-59f6b34\" id=\"what-is-data-integrity-in-postgre-sql\" data-block-id=\"59f6b34\"><style>.stk-59f6b34{margin-top:24px !important}<\/style><h2 class=\"stk-block-heading__text\">What Is Data Integrity in PostgreSQL?<\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-c2da905\" data-block-id=\"c2da905\"><p class=\"stk-block-text__text\">In PostgreSQL, data integrity refers to maintaining the consistency of the data stored in a Postgres database. Specifically, data integrity ensures that the data contained in database tables is valid, reliable, and accurate. PostgreSQL provides several mechanisms and functions to ensure data integrity. The most popular ones are:<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-icon-list stk-block-icon-list stk-block stk-d0c1292\" data-block-id=\"d0c1292\"><ul><li><strong>Data types<\/strong>&nbsp;limit the type of data that can be stored in a column. The range of values they accept is typically too poor. For example, a column containing the price of a product should probably only accept positive values, but there is no standard data type that accepts only positive numbers in PostgreSQL. Plus, data types can only operate on a single column and cannot implement constraints that involve several columns.<\/li><li><strong>Triggers<\/strong>&nbsp;are special database functions that are automatically executed by the DBMS when certain events occur, such as INSERT, UPDATE, or DELETE operations on a table. Triggers come in handy in a variety of scenarios, including enforcing complex business rules or maintaining data consistency across multiple tables. At the same time, they are generally too complex for simple data integrity checks. Check out our complete guide to learn more about&nbsp;<a href=\"https:\/\/www.dbvis.com\/thetable\/sql-triggers-what-they-are-and-how-to-use-them\/\">what SQL triggers are and how to use them<\/a>.<\/li><li><strong>Constraints<\/strong>&nbsp;are rules that ensure that data in tables is accurate and consistent. Specifically, constraints limit what can be added or changed in a table, preventing invalid data from being stored. This ensures that all data in the database tables always follow the rules defined by these constraints. PostgreSQL constraints are a powerful tool specifically designed for data integrity.<\/li><\/ul><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-5c6810e\" data-block-id=\"5c6810e\"><p class=\"stk-block-text__text\">Let\u2019s now look at the different types of constraints in PostgreSQL.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-b2f99e9\" id=\"types-of-postgre-sql-constraints\" data-block-id=\"b2f99e9\"><h2 class=\"stk-block-heading__text\">Types of PostgreSQL Constraints<\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-c2574cf\" data-block-id=\"c2574cf\"><p class=\"stk-block-text__text\">At the time of writing, Postgres supports&nbsp;<a href=\"https:\/\/www.postgresql.org\/docs\/current\/ddl-constraints.html\" target=\"_blank\" rel=\"noreferrer noopener\">six types of database constraints<\/a>&nbsp;to ensure data integrity. Note that you can define constraints through&nbsp;<code>CREATE TABLE<\/code>&nbsp;or&nbsp;<code>ALTER TABLE<\/code>&nbsp;queries. If an&nbsp;<code>INSERT<\/code>&nbsp;or&nbsp;<code>UPDATE<\/code>&nbsp;query goes against a constraint, PostgreSQL will return a constraint violation error.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-e17b387\" data-block-id=\"e17b387\"><p class=\"stk-block-text__text\">Here is the list of all PostgreSQL data integrity constraints.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-71f478b\" id=\"not-null-constraints\" data-block-id=\"71f478b\"><h3 class=\"stk-block-heading__text\">NOT NULL Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-ecbe684\" data-block-id=\"ecbe684\"><p class=\"stk-block-text__text\">A&nbsp;<code>NOT NULL<\/code>&nbsp;constraint ensures that a column cannot have&nbsp;<code>NULL<\/code>&nbsp;values.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-f05f9c0\" data-block-id=\"f05f9c0\"><p class=\"stk-block-text__text\">For example, the following query specifies that the&nbsp;<code>name<\/code>&nbsp;and&nbsp;<code>password<\/code>&nbsp;columns in the&nbsp;<code>users<\/code>&nbsp;table must always be present.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> users (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;name <span class=\"text-product-orange\">VARCHAR<\/span>(50),<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;surname <span class=\"text-product-orange\">VARCHAR<\/span>(50),<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">5<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;email <span class=\"text-product-orange\">VARCHAR<\/span>(250) <span class=\"text-product-orange\">NOT NULL<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">6<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;password <span class=\"text-product-orange\">VARCHAR<\/span>(250) <span class=\"text-product-orange\">NOT NULL<\/span><\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">7<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-17ffe75\" data-block-id=\"17ffe75\"><style>.stk-17ffe75{margin-bottom:0px !important}.stk-17ffe75-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-17ffe75-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-a26fdaf\" data-v=\"4\" data-block-id=\"a26fdaf\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-a26fdaf-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-a26fdaf-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-5a07541\" data-block-id=\"5a07541\"><p class=\"stk-block-text__text\">If you try to create a user with&nbsp;<code>email<\/code>&nbsp;or&nbsp;<code>password<\/code>&nbsp;to&nbsp;<code>NULL<\/code>, you will get the following error:&nbsp;<br><code>ERROR: null value in column \"name\" of relation \"users\" violates not-null constraint<\/code><\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-b11a940\" id=\"unique-constraints\" data-block-id=\"b11a940\"><h3 class=\"stk-block-heading__text\">UNIQUE Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-f87fb10\" data-block-id=\"f87fb10\"><p class=\"stk-block-text__text\">A <code>UNIQUE<\/code> constraint ensures that all values in a column are different, except for <code>NULL<\/code> values.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-6440ed4\" data-block-id=\"6440ed4\"><p class=\"stk-block-text__text\">For example, the query below forces all records in the\u00a0<code>users<\/code>\u00a0table to have a different\u00a0<code>email<\/code>\u00a0value.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> users (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;name <span class=\"text-product-orange\">VARCHAR<\/span>(50),<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;email <span class=\"text-product-orange\">TEXT<\/span> <span class=\"text-product-orange\">UNIQUE<\/span><\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">5<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-6eae273\" data-block-id=\"6eae273\"><style>.stk-6eae273{margin-bottom:0px !important}.stk-6eae273-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-6eae273-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-f9988d9\" data-v=\"4\" data-block-id=\"f9988d9\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-f9988d9-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-f9988d9-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-7b36aef\" id=\"primary-key-constraints\" data-block-id=\"7b36aef\"><h3 class=\"stk-block-heading__text\">PRIMARY KEY Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-f831a8d\" data-block-id=\"f831a8d\"><p class=\"stk-block-text__text\">A&nbsp;<code>PRIMARY KEY<\/code>&nbsp;constraint ensures that a column or group of columns uniquely identifies each record in a database table. Primary keys do not allow&nbsp;<code>NULL<\/code>&nbsp;values and must be unique.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-8bf9c37\" data-block-id=\"8bf9c37\"><p class=\"stk-block-text__text\">For example, the query that follows specifies that the&nbsp;<code>id<\/code>&nbsp;column is the primary key of the&nbsp;<code>logs<\/code>&nbsp;table.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> logs (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;data <span class=\"text-product-orange\">JSONB<\/span><\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-8a12eb5\" data-block-id=\"8a12eb5\"><style>.stk-8a12eb5{margin-bottom:0px !important}.stk-8a12eb5-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-8a12eb5-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-092d3db\" data-v=\"4\" data-block-id=\"092d3db\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-092d3db-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-092d3db-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-65de2e1\" id=\"foreign-key-constraints\" data-block-id=\"65de2e1\"><h3 class=\"stk-block-heading__text\">FOREIGN KEY Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-49f18db\" data-block-id=\"49f18db\"><p class=\"stk-block-text__text\">A&nbsp;<code>FOREIGN KEY<\/code>&nbsp;constraint ensures that the values in a column or group of columns must match the values appearing in some records of another table. This constraint maintains what is called&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Referential_integrity\" target=\"_blank\" rel=\"noreferrer noopener\">referential integrity<\/a>&nbsp;between two tables and implements a relationship between them.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-f44ff6e\" data-block-id=\"f44ff6e\"><p class=\"stk-block-text__text\">For example, the following query specifies that the&nbsp;<code>customer_id<\/code>&nbsp;column must reference the&nbsp;<code>id<\/code>&nbsp;column of the&nbsp;<code>customer<\/code>&nbsp;table.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> orders (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;customer_id INT <span class=\"text-product-orange\">NOT NULL<\/span> <span class=\"text-product-orange\">REFERENCES<\/span> customers(id),<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;order_date <span class=\"text-product-orange\">DATE<\/span><\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">5<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-f85ba2d\" data-block-id=\"f85ba2d\"><style>.stk-f85ba2d{margin-bottom:0px !important}.stk-f85ba2d-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-f85ba2d-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-0c20e07\" data-v=\"4\" data-block-id=\"0c20e07\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-0c20e07-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-0c20e07-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-ae4cd49\" id=\"check-constraints\" data-block-id=\"ae4cd49\"><h3 class=\"stk-block-heading__text\">CHECK Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-15ae71d\" data-block-id=\"15ae71d\"><p class=\"stk-block-text__text\">A&nbsp;<code>CHECK<\/code>&nbsp;constraint ensures that all values in a column satisfy some rules.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-b3e3efa\" data-block-id=\"b3e3efa\"><p class=\"stk-block-text__text\">For example, the query below makes sure that the values in the&nbsp;<code>age<\/code>&nbsp;column of the&nbsp;<code>users<\/code>&nbsp;table are always greater than or equal to 18.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> users (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;name <span class=\"text-product-orange\">VARCHAR<\/span>(50),<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;age INT <span class=\"text-product-orange\">CHECK<\/span> (age &gt;= 18)<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">5<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-61faa50\" data-block-id=\"61faa50\"><style>.stk-61faa50{margin-bottom:0px !important}.stk-61faa50-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-61faa50-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-fcc2928\" data-v=\"4\" data-block-id=\"fcc2928\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-fcc2928-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-fcc2928-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-b15e773\" id=\"exclusion-constraints\" data-block-id=\"b15e773\"><h3 class=\"stk-block-heading__text\">EXCLUSION Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-db05ff8\" data-block-id=\"db05ff8\"><p class=\"stk-block-text__text\">An&nbsp;<code>EXCLUSION<\/code>&nbsp;constraint ensures that if any two rows in a table are compared on the selected column(s) or expression(s) using the specified operator(s), at least one of these operator comparisons will return&nbsp;<code>FALSE<\/code>&nbsp;or&nbsp;<code>NULL<\/code>.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-e19f90d\" data-block-id=\"e19f90d\"><p class=\"stk-block-text__text\">For example, the following query ensures that two appointments for the same room cannot overlap.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">CREATE TABLE<\/span> appointments (<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;id <span class=\"text-product-orange\">SERIAL<\/span> <span class=\"text-product-orange\">PRIMARY KEY<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">3<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;room_number INT <span class=\"text-product-orange\">NOT NULL<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">4<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;period TSRANGE <span class=\"text-product-orange\">NOT NULL<\/span>,<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">5<\/span>\n                    <span class=\"codeBlock codeBlock__line\">&nbsp;&nbsp;&nbsp;&nbsp;EXCLUDE <span class=\"text-product-orange\">USING<\/span> gist (room_number <span class=\"text-product-orange\">WITH<\/span> =, period <span class=\"text-product-orange\">WITH<\/span> &&)<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">6<\/span>\n                    <span class=\"codeBlock codeBlock__line\">)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-3ce13ae\" data-block-id=\"3ce13ae\"><style>.stk-3ce13ae{margin-bottom:0px !important}.stk-3ce13ae-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-3ce13ae-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-a8cedc1\" data-v=\"4\" data-block-id=\"a8cedc1\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-a8cedc1-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-a8cedc1-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-0e266e2\" id=\"how-to-check-data-integrity-in-postgre-sql\" data-block-id=\"0e266e2\"><h2 class=\"stk-block-heading__text\">How to Check Data Integrity in PostgreSQL<\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-7a40a7f\" data-block-id=\"7a40a7f\"><p class=\"stk-block-text__text\">To check data integrity in PostgreSQL, you must verify that the data types, triggers and constraints defined on a table are correct. The best way to do so is to embrace a complete, advanced, fully-featured&nbsp;<a href=\"https:\/\/www.dbvis.com\/database\/postgresql\/\">PostgreSQL client like DbVisualizer!<\/a><\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-8c25f8c\" data-block-id=\"8c25f8c\"><p class=\"stk-block-text__text\">DbVisualizer allows you to visually explore your PostgreSQL database.&nbsp;<a href=\"https:\/\/www.dbvis.com\/download\/\">Download DbVisualizer<\/a>, set up a connection to your database, and start to visually inspect your tables!<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\" data-block-type=\"core\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignwide stk-block-columns stk-block stk-8060293\" data-block-id=\"8060293\"><style>.stk-8060293{margin-top:48px !important;margin-bottom:48px !important}.stk-8060293-column{max-width:900px !important}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-8060293-column alignwide\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-86e08bb stk-block-background\" data-v=\"4\" data-block-id=\"86e08bb\"><style>.stk-86e08bb-inner-blocks{align-items:center !important;column-gap:0px !important}.stk-86e08bb{background-color:#d9f2d2 !important;border-top-left-radius:16px !important;border-top-right-radius:16px !important;border-bottom-right-radius:16px !important;border-bottom-left-radius:16px !important;overflow:hidden !important;border-style:solid !important;border-color:#dbe9d4 !important;border-top-width:2px !important;border-right-width:2px !important;border-bottom-width:2px !important;border-left-width:2px !important;padding-top:20px !important;padding-right:20px !important;padding-bottom:20px !important;padding-left:20px !important}.stk-86e08bb:before{background-color:#d9f2d2 !important}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-86e08bb-container stk--no-background stk--no-padding\"><div class=\"stk--block-horizontal-flex stk--column-flex stk-block-content stk-inner-blocks stk-86e08bb-inner-blocks\">\n<div class=\"wp-block-stackable-image stk-block-image stk-block stk-7d9de3b\" data-block-id=\"7d9de3b\"><style>.stk-7d9de3b .stk-img-wrapper{width:42px !important}<\/style><figure class=\"stk-img-wrapper stk-image--shape-stretch\"><img decoding=\"async\" class=\"stk-img wp-image-3764\" src=\"\/wp-content\/uploads\/2023\/08\/DbVis-Icon.png\" width=\"1024\" height=\"1024\" alt=\"DbVisualizer logo\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/DbVis-Icon.png 1024w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/DbVis-Icon-42x42.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/DbVis-Icon-150x150.png 150w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/DbVis-Icon-300x300.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/DbVis-Icon-768x768.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-8f5d2c9\" data-block-id=\"8f5d2c9\"><style>.stk-8f5d2c9{margin-left:24px !important}.stk-8f5d2c9 .stk-block-text__text{color:#226c4a !important}<\/style><p class=\"stk-block-text__text has-text-color\">If you are looking for an easy and powerful SQL client and database manager, then you've got to try <span style=\"color: #226c4a;\" class=\"stk-highlight\"><a rel=\"noreferrer noopener\" href=\"\/download\/\" target=\"_blank\">DbVisualizer<\/a>.<\/span> It connects to nearly any database.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-d08db6f\" data-block-id=\"d08db6f\"><style>.stk-d08db6f{margin-bottom:0px !important}.stk-d08db6f-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-d08db6f-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-df69011\" data-v=\"4\" data-block-id=\"df69011\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-df69011-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-df69011-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-05b12d7\" id=\"explore-the-column-data-types\" data-block-id=\"05b12d7\"><h3 class=\"stk-block-heading__text\">Explore the Column Data Types<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-9a80f4d\" data-block-id=\"9a80f4d\"><p class=\"stk-block-text__text\">Open DbVisualizer, connect to your target database, and in the \u201cDatabases\u201d section on the left spot the table you want to check. Right-click on it, choose \u201cOpen in a New Tab\u201d and click on the \u201cColumns\u201d tab.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-fd31620\" data-block-id=\"fd31620\"><p class=\"stk-block-text__text\">Here, you can visually see and edit all the info associated with each column, including their data types.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\"><section class=\"thetableImage thetableImage__wrapper\">\n    <div class=\"thetableImage thetableImage__container thetableImage__container--dark thetableImage__container--wide thetableImage__container--shadow\">\n        <div class=\"thetableImage thetableImage__imageWrapper thetableImage__imageWrapper--dark thetableImage__imageWrapper--wide thetableImage__imageWrapper--shadow\">\n            <div class=\"thetableImage thetableImage__imageContainer thetableImage__imageContainer--dark thetableImage__imageContainer--wide thetableImage__imageContainer--shadow\">\n                <img decoding=\"async\" width=\"1024\" height=\"547\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-1024x547.png\" class=\"attachment-large size-large\" alt=\"Analyzing the column data types in DbVisualizer.\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-1024x547.png 1024w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-42x22.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-300x160.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-768x410.png 768w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-1536x821.png 1536w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12-1300x695.png 1300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/1-12.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>            <\/div>\n        <\/div>\n                    <span class=\"thetableImage thetableImage__imageCaption thetableImage__imageCaption--dark thetableImage__imageCaption--wide\">Analyzing the column data types in DbVisualizer.<\/span>\n            <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-0fa4cb5\" data-block-id=\"0fa4cb5\"><style>.stk-0fa4cb5{margin-bottom:0px !important}.stk-0fa4cb5-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-0fa4cb5-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-e56940a\" data-v=\"4\" data-block-id=\"e56940a\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-e56940a-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-e56940a-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-d88e964\" data-block-id=\"d88e964\"><p class=\"stk-block-text__text\">This is a great view to verify that the data types and most popular PostgreSQL constraints on a table\u2019s columns are set correctly.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-fd20e8b\" id=\"deal-with-triggers\" data-block-id=\"fd20e8b\"><h3 class=\"stk-block-heading__text\">Deal With Triggers<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-454df39\" data-block-id=\"454df39\"><p class=\"stk-block-text__text\">Connect to a database in DbVisualizer, select the target table, and click on the \u201cTriggers\u201d dropdown. This will show you all triggers associated with the selected table. Right-click on the \u201cTriggers\u201d view to access the following view:<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\"><section class=\"thetableImage thetableImage__wrapper\">\n    <div class=\"thetableImage thetableImage__container thetableImage__container--dark thetableImage__container--wide thetableImage__container--shadow\">\n        <div class=\"thetableImage thetableImage__imageWrapper thetableImage__imageWrapper--dark thetableImage__imageWrapper--wide thetableImage__imageWrapper--shadow\">\n            <div class=\"thetableImage thetableImage__imageContainer thetableImage__imageContainer--dark thetableImage__imageContainer--wide thetableImage__imageContainer--shadow\">\n                <img decoding=\"async\" width=\"1024\" height=\"547\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-1024x547.png\" class=\"attachment-large size-large\" alt=\"Exploring the list of triggers related to a table in DbVisualizer.\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-1024x547.png 1024w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-42x22.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-300x160.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-768x410.png 768w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-1536x821.png 1536w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11-1300x695.png 1300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/2-11.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>            <\/div>\n        <\/div>\n                    <span class=\"thetableImage thetableImage__imageCaption thetableImage__imageCaption--dark thetableImage__imageCaption--wide\">Exploring the list of triggers related to a table in DbVisualizer.<\/span>\n            <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-72925b2\" data-block-id=\"72925b2\"><style>.stk-72925b2{margin-bottom:0px !important}.stk-72925b2-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-72925b2-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-0c9a8d9\" data-v=\"4\" data-block-id=\"0c9a8d9\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-0c9a8d9-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-0c9a8d9-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-55a9a8e\" data-block-id=\"55a9a8e\"><p class=\"stk-block-text__text\">Here, you can easily see, edit, add, and delete triggers and make sure that they are accomplishing their data integrity goals.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-c223ac2\" id=\"defining-postgre-sql-constraints\" data-block-id=\"c223ac2\"><h3 class=\"stk-block-heading__text\">Defining PostgreSQL Constraints<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-1060662\" data-block-id=\"1060662\"><p class=\"stk-block-text__text\">Start DbVisualizer, reach the table of your interest, right-click on it, and select the \u201cAlter Table\u2026\u201d option.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\"><section class=\"thetableImage thetableImage__wrapper\">\n    <div class=\"thetableImage thetableImage__container thetableImage__container--dark thetableImage__container--wide thetableImage__container--shadow\">\n        <div class=\"thetableImage thetableImage__imageWrapper thetableImage__imageWrapper--dark thetableImage__imageWrapper--wide thetableImage__imageWrapper--shadow\">\n            <div class=\"thetableImage thetableImage__imageContainer thetableImage__imageContainer--dark thetableImage__imageContainer--wide thetableImage__imageContainer--shadow\">\n                <img decoding=\"async\" width=\"1024\" height=\"471\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-1024x471.png\" class=\"attachment-large size-large\" alt=\"Opening the Alter Table modal.\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-1024x471.png 1024w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-42x19.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-300x138.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-768x353.png 768w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-260x121.png 260w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9-1300x598.png 1300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/3-9.png 1302w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>            <\/div>\n        <\/div>\n                    <span class=\"thetableImage thetableImage__imageCaption thetableImage__imageCaption--dark thetableImage__imageCaption--wide\">Opening the \"Alter Table\" modal.<\/span>\n            <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-acb28bc\" data-block-id=\"acb28bc\"><style>.stk-acb28bc{margin-bottom:0px !important}.stk-acb28bc-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-acb28bc-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-19b8df6\" data-v=\"4\" data-block-id=\"19b8df6\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-19b8df6-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-19b8df6-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-52d346d\" data-block-id=\"52d346d\"><p class=\"stk-block-text__text\">This will open the following modal:<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\"><section class=\"thetableImage thetableImage__wrapper\">\n    <div class=\"thetableImage thetableImage__container thetableImage__container--dark thetableImage__container--wide thetableImage__container--shadow\">\n        <div class=\"thetableImage thetableImage__imageWrapper thetableImage__imageWrapper--dark thetableImage__imageWrapper--wide thetableImage__imageWrapper--shadow\">\n            <div class=\"thetableImage thetableImage__imageContainer thetableImage__imageContainer--dark thetableImage__imageContainer--wide thetableImage__imageContainer--shadow\">\n                <img decoding=\"async\" width=\"892\" height=\"667\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/4-8.png\" class=\"attachment-large size-large\" alt=\"Visually dealing with PostgreSQL constraints in DbVisualizer.\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/4-8.png 892w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/4-8-42x31.png 42w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/4-8-300x224.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/4-8-768x574.png 768w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/>            <\/div>\n        <\/div>\n                    <span class=\"thetableImage thetableImage__imageCaption thetableImage__imageCaption--dark thetableImage__imageCaption--wide\">Visually dealing with PostgreSQL constraints in DbVisualizer.<\/span>\n            <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-5fe376f\" data-block-id=\"5fe376f\"><style>.stk-5fe376f{margin-bottom:0px !important}.stk-5fe376f-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-5fe376f-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-f2cec2f\" data-v=\"4\" data-block-id=\"f2cec2f\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-f2cec2f-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-f2cec2f-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-42e0bf3\" data-block-id=\"42e0bf3\"><p class=\"stk-block-text__text\">Here, you can see, add, and drop PostgreSQL constraints on each column of the selected table. Data integrity in PostgreSQL has never been easier!<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-105df01\" id=\"conclusion\" data-block-id=\"105df01\"><h2 class=\"stk-block-heading__text\">Conclusion<\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-6b01ad1\" data-block-id=\"6b01ad1\"><p class=\"stk-block-text__text\">In this article, you understood what data integrity is and what PostgreSQL offers to enforce it. This includes data types, triggers, and constraints. Specifically, you learned that PostgreSQL constraints are the most complete tool for data integrity and saw how to use the most popular ones. You also saw that checking data integrity is a complex task that requires a complete database client with full PostgreSQL support, such as DbVisualizer. With such an advanced tool, you can visually explore your tables, write optimized queries, and take your database management to the next level.&nbsp;<a href=\"https:\/\/www.dbvis.com\/download\/\">Download DbVisualizer for free!<\/a><\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-5088950\" id=\"faq-about-data-integrity\" data-block-id=\"5088950\"><h2 class=\"stk-block-heading__text\">FAQ About Data Integrity<\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-d19f6c0\" id=\"can-two-postgre-sql-constraints-have-the-same-name\" data-block-id=\"d19f6c0\"><h3 class=\"stk-block-heading__text\">Can two PostgreSQL constraints have the same name?<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-99cdc3a\" data-block-id=\"99cdc3a\"><p class=\"stk-block-text__text\">No, Postgres constraints must have unique names within the schema they belong to. This means that you cannot have two constraints with the same name in a specific schema. If you attempt to create a constraint with a name that already exists, the DBMS will raise the following error:&nbsp;<code>ERROR: constraint \"\" for relation \"\" already exists<\/code>. To give your constraints meaningful and unique names, it is recommended to follow a naming convention.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-6699ec0\" id=\"what-are-the-two-types-of-data-integrity\" data-block-id=\"6699ec0\"><h3 class=\"stk-block-heading__text\">What are the two types of data integrity?<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-ed39579\" data-block-id=\"ed39579\"><p class=\"stk-block-text__text\">There are two types of data integrity:<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-icon-list stk-block-icon-list stk-block stk-9d3b981\" data-block-id=\"9d3b981\"><ul><li><code>Physical integrity<\/code>: Refers to the consistency of data at the physical level. It involves ensuring that the data is stored correctly on disk and that there are no data corruptions from an electronic point of view. Examples of physical integrity checks include&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Checksum\" target=\"_blank\" rel=\"noreferrer noopener\">checksums<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Parity_bit\" target=\"_blank\" rel=\"noreferrer noopener\">parity checks<\/a>.<\/li><li><code>Logical integrity<\/code>: Refers to the accuracy of data within a database at the conceptual level. This includes ensuring that the relationships between tables are correctly defined and that the data within each table is consistent. Examples of logical integrity constraints include primary key constraints, foreign key constraints, and check constraints.<\/li><\/ul><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-a798311\" id=\"what-are-the-five-principles-of-data-integrity\" data-block-id=\"a798311\"><h3 class=\"stk-block-heading__text\">What are the five principles of data integrity?<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-2e38e29\" data-block-id=\"2e38e29\"><p class=\"stk-block-text__text\">The five principles of data integrity are identified by the acronym ALCOA, which stands for:<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-icon-list stk-block-icon-list stk-block stk-46db67c\" data-block-id=\"46db67c\"><ul><li><strong>Attributable<\/strong>: Data should be uniquely attributable to the individual or automated system that produced it.<\/li><li><strong>Legible<\/strong>: Data should be recorded in a form that allows it makes it easy to read and understand.<\/li><li><strong>Contemporaneous<\/strong>: Data should be stored at the time of its creation.<\/li><li><strong>Original<\/strong>: Data should be original and not copied from another source unless required.<\/li><li><strong>Accurate<\/strong>: Data should be accurate, complete, and reliable, without any omissions or errors. This requires some control mechanisms.<\/li><\/ul><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-9adf695\" id=\"how-to-add-a-foreign-key-constraint-in-postgre-sql\" data-block-id=\"9adf695\"><h3 class=\"stk-block-heading__text\">How to add a foreign key constraint in PostgreSQL?<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-a060e1a\" data-block-id=\"a060e1a\"><p class=\"stk-block-text__text\">In PostgreSQL, you can add a foreign key constraint to an existing table through the <code>ALTER TABLE<\/code> statement as in the example below:<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">ALTER TABLE<\/span> orders<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">ADD CONSTRAINT<\/span> order_user_id_fkey <span class=\"text-product-orange\">FOREIGN KEY<\/span> (user_id) <span class=\"text-product-orange\">REFERENCES<\/span> users(id)<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-93bab4f\" data-block-id=\"93bab4f\"><style>.stk-93bab4f{margin-bottom:0px !important}.stk-93bab4f-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-93bab4f-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-c170810\" data-v=\"4\" data-block-id=\"c170810\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-c170810-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-c170810-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-45b534e\" data-block-id=\"45b534e\"><p class=\"stk-block-text__text\">The&nbsp;<code>user_id<\/code>&nbsp;column of the&nbsp;<code>order<\/code>&nbsp;table will now reference the&nbsp;<code>id<\/code>&nbsp;primary key column of the&nbsp;<code>user<\/code>&nbsp;table.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-f49e641\" id=\"how-to-drop-a-constraint-in-postgre-sql\" data-block-id=\"f49e641\"><h3 class=\"stk-block-heading__text\">How to drop a constraint in PostgreSQL?<\/h3><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-b695d09\" data-block-id=\"b695d09\"><p class=\"stk-block-text__text\">You can drop a constraint in PostgreSQL with an ALTER TABLE query as below:<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-dbvis-light-yellow-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" data-block-type=\"core\"><section class=\"codeBlock codeBlock__wrapper\">\n    <div class=\"codeBlock codeBlock__copyWrapper\">\n        <a class=\"codeBlock codeBlock__copyCodeButton\">Copy<\/a>\n        <pre class=\"codeBlock codeBlock__container\">\n        <div class=\"codeBlock codeBlock__codeBlockNumber\"><\/div>\n        <code class=\"codeBlock codeBlock__linesContainer\">\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">1<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">ALTER TABLE<\/span> orders<\/span>\n                <\/span>\n                            <span class=\"codeBlock codeBlock__lineContainer\">\n                    <span class=\"codeBlock codeBlock__lineCount\">2<\/span>\n                    <span class=\"codeBlock codeBlock__line\"><span class=\"text-product-orange\">DROP CONSTRAINT<\/span> order_user_id_fkey<\/span>\n                <\/span>\n                    <\/code>\n    <\/pre>\n    <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f9f9e1\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-be9d99a\" data-block-id=\"be9d99a\"><style>.stk-be9d99a{margin-bottom:0px !important}.stk-be9d99a-column{max-width:672px !important;justify-content:flex-start !important}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-left stk-block-content stk-content-align stk-be9d99a-column stk--flex alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-b26287c\" data-v=\"4\" data-block-id=\"b26287c\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-b26287c-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-b26287c-inner-blocks\">\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-817afe4\" data-block-id=\"817afe4\"><p class=\"stk-block-text__text\"><code>orders<\/code>&nbsp;is the table the constraint refers to, and fk_order_user is the name of the constraint that you want to drop. Note that dropping a constraint can lead to data integrity issues.<a href=\"https:\/\/www.dbvis.com\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" data-block-type=\"core\" data-block-type=\"core\" data-block-type=\"core\">\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-1d92408 stk-block-background\" data-block-id=\"1d92408\"><style>.stk-1d92408 {background-color:var(--stk-global-color-70050, #f9f9e1) !important;margin-bottom:0px !important;}.stk-1d92408:before{background-color:var(--stk-global-color-70050, #f9f9e1) !important;}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-1d92408-column alignwide\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-b8a8e51\" data-v=\"4\" data-block-id=\"b8a8e51\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-b8a8e51-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-b8a8e51-inner-blocks\">\n<div class=\"wp-block-stackable-image stk-block-image stk-block stk-d9669e0\" data-block-id=\"d9669e0\"><figure><a class=\"stk-link\" href=\"\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"stk-img-wrapper stk-image--shape-stretch\"><img decoding=\"async\" class=\"stk-img wp-image-26081\" src=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-scaled.png\" width=\"2560\" height=\"577\" alt=\"Dbvis download link img\" srcset=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-scaled.png 2560w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-300x68.png 300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-1024x231.png 1024w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-768x173.png 768w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-1536x346.png 1536w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-2048x462.png 2048w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-1300x293.png 1300w, https:\/\/www.dbvis.com\/wp-content\/uploads\/2022\/12\/Banner-1-42x9.png 42w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/span><\/a><\/figure><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>intro Let\u2019s explore what tools PostgreSQL offers to enforce data integrity. Follow this tutorial and become an expert on PostgreSQL constraints! One of the main features offered by relational databases is data integrity, which ensures that the data contained in the database is reliable and consistent. In PostgreSQL, data integrity is enforced through data types, [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[25],"class_list":["post-6289","post","type-post","status-publish","format-standard","hentry","category-thetable","tag-postgresql"],"acf":{"updated_date":null,"featured":false,"prio":"","highlighted":false,"type":"GUIDE","length":"10 MINS","author":[8009],"tools_used":null},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Understanding PostgreSQL Data Integrity<\/title>\n<meta name=\"description\" content=\"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.\" \/>\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.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding PostgreSQL Data Integrity\" \/>\n<meta property=\"og:description\" content=\"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/\" \/>\n<meta property=\"og:site_name\" content=\"DbVisualizer\" \/>\n<meta property=\"article:author\" content=\"Antonello Zanini\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-08T12:01:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-05T07:55:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/05\/og-15.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1465\" \/>\n\t<meta property=\"og:image:height\" content=\"723\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonello Zanini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Understanding PostgreSQL Data Integrity\" \/>\n<meta name=\"twitter:description\" content=\"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.\" \/>\n<meta name=\"twitter:creator\" content=\"@dbvisualizer\" \/>\n<meta name=\"twitter:site\" content=\"@dbvisualizer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonello Zanini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 MINS\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Understanding PostgreSQL Data Integrity","description":"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.","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.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/","og_locale":"en_US","og_type":"article","og_title":"Understanding PostgreSQL Data Integrity","og_description":"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.","og_url":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/","og_site_name":"DbVisualizer","article_author":"Antonello Zanini","article_published_time":"2023-05-08T12:01:00+00:00","article_modified_time":"2024-07-05T07:55:28+00:00","og_image":[{"width":1465,"height":723,"url":"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/05\/og-15.png","type":"image\/png"}],"author":"Antonello Zanini","twitter_card":"summary_large_image","twitter_title":"Understanding PostgreSQL Data Integrity","twitter_description":"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.","twitter_creator":"@dbvisualizer","twitter_site":"@dbvisualizer","twitter_misc":{"Written by":"Antonello Zanini","Est. reading time":"10 MINS"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/#article","isPartOf":{"@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/"},"author":{"name":"Linda","@id":"https:\/\/www.dbvis.com\/#\/schema\/person\/220b74381f69bb6f0b2de51c19c6c5c3"},"headline":"Understanding PostgreSQL Data Integrity","datePublished":"2023-05-08T12:01:00+00:00","dateModified":"2024-07-05T07:55:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/"},"wordCount":1556,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbvis.com\/#organization"},"keywords":["POSTGRESQL"],"articleSection":["TheTable"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/","url":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/","name":"Understanding PostgreSQL Data Integrity","isPartOf":{"@id":"https:\/\/www.dbvis.com\/#website"},"datePublished":"2023-05-08T12:01:00+00:00","dateModified":"2024-07-05T07:55:28+00:00","description":"This comprehensive guide covers what data integrity is and how to ensure it in Postgres. Explore what tools PostgreSQL offers to enforce data integrity.","breadcrumb":{"@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbvis.com\/thetable\/understanding-postgresql-data-integrity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Hem","item":"https:\/\/www.dbvis.com\/"},{"@type":"ListItem","position":2,"name":"Understanding PostgreSQL Data Integrity"}]},{"@type":"WebSite","@id":"https:\/\/www.dbvis.com\/#website","url":"https:\/\/www.dbvis.com\/","name":"DbVisualizer","description":"","publisher":{"@id":"https:\/\/www.dbvis.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbvis.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dbvis.com\/#organization","name":"DbVisualizer","alternateName":"DbVis","url":"https:\/\/www.dbvis.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbvis.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/dbvisualizer_logo_squircle.svg","contentUrl":"https:\/\/www.dbvis.com\/wp-content\/uploads\/2023\/08\/dbvisualizer_logo_squircle.svg","width":72,"height":72,"caption":"DbVisualizer"},"image":{"@id":"https:\/\/www.dbvis.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/dbvisualizer"]},{"@type":"Person","@id":"https:\/\/www.dbvis.com\/#\/schema\/person\/220b74381f69bb6f0b2de51c19c6c5c3","name":"Linda","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbvis.com\/wp-content\/litespeed\/avatar\/7e4cf781845f1f27037a5c6b10a6a5d7.jpg?ver=1776302580","url":"https:\/\/www.dbvis.com\/wp-content\/litespeed\/avatar\/7e4cf781845f1f27037a5c6b10a6a5d7.jpg?ver=1776302580","contentUrl":"https:\/\/www.dbvis.com\/wp-content\/litespeed\/avatar\/7e4cf781845f1f27037a5c6b10a6a5d7.jpg?ver=1776302580","caption":"Linda"}}]}},"_links":{"self":[{"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/posts\/6289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/comments?post=6289"}],"version-history":[{"count":4,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/posts\/6289\/revisions"}],"predecessor-version":[{"id":20060,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/posts\/6289\/revisions\/20060"}],"acf:post":[{"embeddable":true,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/thetable-author\/8009"}],"wp:attachment":[{"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/media?parent=6289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/categories?post=6289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbvis.com\/wp-json\/wp\/v2\/tags?post=6289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}