{"id":591,"date":"2018-06-01T11:06:30","date_gmt":"2018-06-01T04:06:30","guid":{"rendered":"http:\/\/www.sqlservertutorial.net\/?page_id=591"},"modified":"2020-04-11T20:13:24","modified_gmt":"2020-04-11T13:13:24","slug":"sql-server-foreign-key","status":"publish","type":"page","link":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/","title":{"rendered":"SQL Server FOREIGN KEY"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-the-sql-server-foreign-key-constraint'>Introduction to the SQL Server foreign key constraint <a href=\"#introduction-to-the-sql-server-foreign-key-constraint\" class=\"anchor\" id=\"introduction-to-the-sql-server-foreign-key-constraint\" title=\"Anchor for Introduction to the SQL Server foreign key constraint\">#<\/a><\/h2>\n\n\n\n<p>Consider the following <code>vendor_groups<\/code> and <code>vendors<\/code> tables:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> procurement.vendor_groups (\n    <span class=\"hljs-keyword\">group_id<\/span> <span class=\"hljs-built_in\">INT<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> PRIMARY <span class=\"hljs-keyword\">KEY<\/span>,\n    group_name <span class=\"hljs-built_in\">VARCHAR<\/span> (<span class=\"hljs-number\">100<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>\n);\n\n<span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> procurement.vendors (\n        vendor_id <span class=\"hljs-built_in\">INT<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> PRIMARY <span class=\"hljs-keyword\">KEY<\/span>,\n        vendor_name <span class=\"hljs-built_in\">VARCHAR<\/span>(<span class=\"hljs-number\">100<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>,\n        <span class=\"hljs-keyword\">group_id<\/span> <span class=\"hljs-built_in\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>,\n);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Each vendor belongs to a vendor group and each vendor group may have zero or more vendors. The relationship between the <code>vendor_groups<\/code> and <code>vendors<\/code> tables is one-to-many.<\/p>\n\n\n\n<p>For each row in the &nbsp;<code>vendors<\/code> table, you can always find a corresponding row in the <code>vendor_groups<\/code> table.<\/p>\n\n\n\n<p>However, with the current tables setup, you can <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-insert\/\">insert a row<\/a> into the &nbsp;<code>vendors<\/code> table without a corresponding row in the <code>vendor_groups<\/code> table. Similarly, you can also <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-delete\/\">delete a row<\/a> in the <code>vendor_groups<\/code> table without <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-update\/\">updating<\/a> or deleting the corresponding rows in the &nbsp;<code>vendors<\/code> table that results in orphaned rows in the &nbsp;<code>vendors<\/code> table.<\/p>\n\n\n\n<p>To enforce the link between data in the <code>vendor_groups<\/code> and <code>vendors<\/code> tables, you need to establish a foreign key in the&nbsp;<code>vendors<\/code> table.<\/p>\n\n\n\n<p>A foreign key is a column or a group of columns in one table that uniquely identifies a row of another table (or the same table in case of self-reference).<\/p>\n\n\n\n<p>To create a foreign key, you use the <code>FOREIGN KEY<\/code> constraint.<\/p>\n\n\n\n<p>The following statements drop the &nbsp;<code>vendors<\/code> table and recreate it with a <code>FOREIGN KEY<\/code> constraint:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">DROP<\/span> <span class=\"hljs-keyword\">TABLE<\/span> vendors;\n\n<span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> procurement.vendors (\n        vendor_id <span class=\"hljs-built_in\">INT<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span> PRIMARY <span class=\"hljs-keyword\">KEY<\/span>,\n        vendor_name <span class=\"hljs-built_in\">VARCHAR<\/span>(<span class=\"hljs-number\">100<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>,\n        <span class=\"hljs-keyword\">group_id<\/span> <span class=\"hljs-built_in\">INT<\/span> <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>,\n        <span class=\"hljs-keyword\">CONSTRAINT<\/span> fk_group <span class=\"hljs-keyword\">FOREIGN<\/span> <span class=\"hljs-keyword\">KEY<\/span> (<span class=\"hljs-keyword\">group_id<\/span>) \n        <span class=\"hljs-keyword\">REFERENCES<\/span> procurement.vendor_groups(<span class=\"hljs-keyword\">group_id<\/span>)\n);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>vendor_groups<\/code> table now is called the <strong>parent table<\/strong> that is the table to which the foreign key constraint references. The&nbsp;<code>vendors<\/code> table is called the <strong>child table<\/strong> that is the table to which the foreign key constraint is applied.<\/p>\n\n\n\n<p>In the statement above, the following clause creates a <code>FOREIGN KEY<\/code> constraint named <code>fk_group<\/code> that links the <code>group_id<\/code> in the &nbsp;<code>vendors<\/code> table to the <code>group_id<\/code> in the <code>vendor_groups<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">CONSTRAINT fk_group FOREIGN KEY (group_id) REFERENCES procurement.vendor_groups(group_id)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-foreign-key-constraint-syntax'>SQL Server FOREIGN KEY constraint syntax <a href=\"#sql-server-foreign-key-constraint-syntax\" class=\"anchor\" id=\"sql-server-foreign-key-constraint-syntax\" title=\"Anchor for SQL Server &lt;code&gt;FOREIGN KEY&lt;\/code&gt; constraint syntax\">#<\/a><\/h2>\n\n\n\n<p>The general syntax for creating a <code>FOREIGN KEY<\/code> constraint is as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">CONSTRAINT fk_constraint_name \nFOREIGN KEY (column_1, column2,...)\nREFERENCES parent_table_name(column1,column2,..)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Let&#8217;s examine this syntax in detail.<\/p>\n\n\n\n<p>First, specify the <code>FOREIGN KEY<\/code> constraint name after the <code>CONSTRAINT<\/code> keyword. The constraint name is optional therefore it is possible to define a <code>FOREIGN KEY<\/code> constraint as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">FOREIGN KEY (column_1, column2,...)\nREFERENCES parent_table_name(column1,column2,..)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this case, SQL Server will automatically generate a name for the <code>FOREIGN KEY<\/code> constraint.<\/p>\n\n\n\n<p>Second, specify a list of comma-separated foreign key columns enclosed by parentheses after the <code>FOREIGN KEY<\/code> keyword.<\/p>\n\n\n\n<p>Third, specify the name of the parent table to which the foreign key references and a list of comma-separated columns that has a link with the column in the child table.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-foreign-key-constraint-example'>SQL Server FOREIGN KEY constraint example <a href=\"#sql-server-foreign-key-constraint-example\" class=\"anchor\" id=\"sql-server-foreign-key-constraint-example\" title=\"Anchor for SQL Server &lt;code&gt;FOREIGN KEY&lt;\/code&gt; constraint example\">#<\/a><\/h2>\n\n\n\n<p>First, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-insert\/\">insert<\/a> some rows into the <code>vendor_groups<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> procurement.vendor_groups(group_name)\n<span class=\"hljs-keyword\">VALUES<\/span>(<span class=\"hljs-string\">'Third-Party Vendors'<\/span>),\n      (<span class=\"hljs-string\">'Interco Vendors'<\/span>),\n      (<span class=\"hljs-string\">'One-time Vendors'<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, insert a new vendor with a vendor group into the &nbsp;<code>vendors<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> procurement.vendors(vendor_name, <span class=\"hljs-keyword\">group_id<\/span>)\n<span class=\"hljs-keyword\">VALUES<\/span>(<span class=\"hljs-string\">'ABC Corp'<\/span>,<span class=\"hljs-number\">1<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The statement worked as expected.<\/p>\n\n\n\n<p>Third, try to insert a new vendor whose vendor group does not exist in the <code>vendor_groups<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> procurement.vendors(vendor_name, <span class=\"hljs-keyword\">group_id<\/span>)\n<span class=\"hljs-keyword\">VALUES<\/span>(<span class=\"hljs-string\">'XYZ Corp'<\/span>,<span class=\"hljs-number\">4<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>SQL Server issued the following error:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">The <span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">statement<\/span> conflicted <span class=\"hljs-keyword\">with<\/span> the <span class=\"hljs-keyword\">FOREIGN<\/span> <span class=\"hljs-keyword\">KEY<\/span> <span class=\"hljs-keyword\">constraint<\/span> <span class=\"hljs-string\">\"fk_group\"<\/span>. The conflict occurred <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-keyword\">database<\/span> <span class=\"hljs-string\">\"BikeStores\"<\/span>, <span class=\"hljs-keyword\">table<\/span> <span class=\"hljs-string\">\"procurement.vendor_groups\"<\/span>, <span class=\"hljs-keyword\">column<\/span> <span class=\"hljs-string\">'group_id'<\/span>.\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this example, because of the <code>FOREIGN KEY<\/code> constraint, SQL Server rejected the insert and issued an error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='referential-actions'>Referential actions <a href=\"#referential-actions\" class=\"anchor\" id=\"referential-actions\" title=\"Anchor for Referential actions\">#<\/a><\/h2>\n\n\n\n<p>The foreign key constraint ensures referential integrity. It means that you can only insert a row into the child table if there is a corresponding row in the parent table.<\/p>\n\n\n\n<p>Besides, the foreign key constraint allows you to define the referential actions when the row in the parent table is updated or deleted as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">FOREIGN KEY (foreign_key_columns)\n    REFERENCES parent_table(parent_key_columns)\n    ON <span class=\"hljs-keyword\">UPDATE<\/span> <span class=\"hljs-keyword\">action<\/span> \n    <span class=\"hljs-keyword\">ON<\/span> <span class=\"hljs-keyword\">DELETE<\/span> <span class=\"hljs-keyword\">action<\/span>;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>ON UPDATE<\/code>&nbsp;and <code>ON DELETE&nbsp;<\/code>specify which action will execute when a row in the parent table is updated and deleted. The following are permitted actions : <code>NO ACTION<\/code>, <code>CASCADE<\/code>, <code>SET NULL<\/code>, and <code>SET DEFAULT<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id='delete-actions-of-rows-in-the-parent-table'>Delete actions of rows in the parent table <a href=\"#delete-actions-of-rows-in-the-parent-table\" class=\"anchor\" id=\"delete-actions-of-rows-in-the-parent-table\" title=\"Anchor for Delete actions of rows in the parent table\">#<\/a><\/h3>\n\n\n\n<p>If you delete one or more rows in the parent table, you can set one of the following actions:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>ON DELETE NO ACTION<\/code>: SQL Server raises an error and rolls back the delete action on the row in the parent table.<\/li><li><code>ON DELETE CASCADE<\/code>: SQL Server deletes the rows in the child table that is corresponding to the row deleted from the parent table.<\/li><li><code>ON DELETE SET NULL<\/code>: SQL Server sets the rows in the child table to <code>NULL<\/code> if the corresponding rows in the parent table are deleted. To execute this action, the foreign key columns must be nullable.<\/li><li><code>ON DELETE SET DEFAULT<\/code>&nbsp;SQL&nbsp;Server sets the rows in the child table to their default values if the corresponding rows in the parent table are deleted. To execute this action, the foreign key columns must have default definitions. Note that a nullable column has a&nbsp;default value of <code>NULL<\/code> if no default value specified.<\/li><\/ul>\n\n\n\n<p>By default, SQL Server applies<code>ON DELETE NO ACTION<\/code> if you don&#8217;t explicitly specify any action.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id='update-action-of-rows-in-the-parent-table'>Update action of rows in the parent table <a href=\"#update-action-of-rows-in-the-parent-table\" class=\"anchor\" id=\"update-action-of-rows-in-the-parent-table\" title=\"Anchor for Update action of rows in the parent table\">#<\/a><\/h3>\n\n\n\n<p>If you update one or more rows in the parent table, you can set one of the following actions:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>ON UPDATE NO ACTION<\/code>: SQL Server raises an error and rolls back the update action on the row in the parent table.<\/li><li><code>ON UPDATE CASCADE<\/code>: SQL Server updates the corresponding rows in the child table when the rows in the parent table are updated.<\/li><li><code>ON UPDATE SET NULL<\/code>: SQL Server sets the rows in the child table to <code>NULL<\/code> when the corresponding row in the parent table is updated. Note that the foreign key columns must be nullable for this action to execute.<\/li><li><code>ON UPDATE SET DEFAULT<\/code>: SQL Server sets the default values for the rows in the child table that have the corresponding rows in the parent table updated.<\/li><\/ul>\n\n\n\n<p>In this tutorial, you have learned how to use the SQL Server foreign key constraint to enforce the referential integrity between tables.<\/p>\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=\"591\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/\"\n\t\t\t\tdata-post-title=\"SQL Server FOREIGN KEY\"\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=\"591\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/\"\n\t\t\t\tdata-post-title=\"SQL Server FOREIGN KEY\"\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>Summary: In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables. Introduction to the SQL Server foreign key constraint # Consider the following vendor_groups and vendors tables: Each vendor belongs to a vendor group and each vendor group may have [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":100,"menu_order":79,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-591","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>Essential Guide to SQL Server FOREIGN KEY Constraint<\/title>\n<meta name=\"description\" content=\"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.\" \/>\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.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Essential Guide to SQL Server FOREIGN KEY Constraint\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/\" \/>\n<meta property=\"og:site_name\" content=\"SQL Server Tutorial\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-11T13:13:24+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-foreign-key\\\/\",\"url\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-foreign-key\\\/\",\"name\":\"Essential Guide to SQL Server FOREIGN KEY Constraint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/#website\"},\"datePublished\":\"2018-06-01T04:06:30+00:00\",\"dateModified\":\"2020-04-11T13:13:24+00:00\",\"description\":\"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-foreign-key\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-foreign-key\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-foreign-key\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server Basics\",\"item\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SQL Server FOREIGN KEY\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/\",\"name\":\"SQL Server Tutorial\",\"description\":\"The Practical SQL Server Tutorial\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/?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":"Essential Guide to SQL Server FOREIGN KEY Constraint","description":"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.","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.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/","og_locale":"en_US","og_type":"article","og_title":"Essential Guide to SQL Server FOREIGN KEY Constraint","og_description":"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.","og_url":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/","og_site_name":"SQL Server Tutorial","article_modified_time":"2020-04-11T13:13:24+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/","url":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/","name":"Essential Guide to SQL Server FOREIGN KEY Constraint","isPartOf":{"@id":"https:\/\/www.sqlservertutorial.net\/#website"},"datePublished":"2018-06-01T04:06:30+00:00","dateModified":"2020-04-11T13:13:24+00:00","description":"In this tutorial, you will learn how to use the SQL Server foreign key constraint to enforce a link between the data in two tables.","breadcrumb":{"@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-foreign-key\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlservertutorial.net\/"},{"@type":"ListItem","position":2,"name":"SQL Server Basics","item":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/"},{"@type":"ListItem","position":3,"name":"SQL Server FOREIGN KEY"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlservertutorial.net\/#website","url":"https:\/\/www.sqlservertutorial.net\/","name":"SQL Server Tutorial","description":"The Practical SQL Server Tutorial","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlservertutorial.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/comments?post=591"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/591\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/100"}],"wp:attachment":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/media?parent=591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}