<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FConstraints%2FCreate_Foreign_Key</id>
		<title>Oracle PL/SQL/Constraints/Create Foreign Key - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FConstraints%2FCreate_Foreign_Key"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Foreign_Key&amp;action=history"/>
		<updated>2026-04-04T10:38:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Foreign_Key&amp;diff=2552&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Foreign_Key&amp;diff=2552&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Foreign_Key&amp;diff=2553&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Foreign_Key&amp;diff=2553&amp;oldid=prev"/>
				<updated>2010-05-26T10:01:57Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Add constraint foreign key references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table parts&lt;br /&gt;
  2  (part_no   number primary key,&lt;br /&gt;
  3   part_name varchar2(20),&lt;br /&gt;
  4   parent number);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (4, &amp;quot;part1&amp;quot; , 3)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (5, &amp;quot;part2&amp;quot; , 3)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (6, &amp;quot;part3&amp;quot; , 3)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (7, &amp;quot;part4&amp;quot; , 6)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (10, &amp;quot;part5&amp;quot; , null)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (2, &amp;quot;part6&amp;quot; , 10)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into parts&lt;br /&gt;
  2  values (3, &amp;quot;part7&amp;quot; , 10)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table parts&lt;br /&gt;
  2  add constraint fk_parent foreign key (parent) references parts;&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table parts;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a foreign key with more than one field==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --  create a foreign key with more than one field as in the example below:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     CREATE TABLE supplier&lt;br /&gt;
  2      (      supplier_id     numeric(10)     not null,&lt;br /&gt;
  3             supplier_name   varchar2(50)    not null,&lt;br /&gt;
  4             contact_name    varchar2(50),&lt;br /&gt;
  5             CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)&lt;br /&gt;
  6      );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     CREATE TABLE products&lt;br /&gt;
  2      (      product_id      numeric(10)     not null,&lt;br /&gt;
  3             supplier_id     numeric(10)     not null,&lt;br /&gt;
  4             supplier_name   varchar2(50)    not null,&lt;br /&gt;
  5             CONSTRAINT fk_supplier_comp&lt;br /&gt;
  6               FOREIGN KEY (supplier_id, supplier_name)&lt;br /&gt;
  7               REFERENCES supplier(supplier_id, supplier_name)&lt;br /&gt;
  8      );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     desc products;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 PRODUCT_ID                                                                                            NOT NULL NUMBER(10)&lt;br /&gt;
 SUPPLIER_ID                                                                                           NOT NULL NUMBER(10)&lt;br /&gt;
 SUPPLIER_NAME                                                                                         NOT NULL VARCHAR2(50)&lt;br /&gt;
SQL&amp;gt;     desc supplier;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 SUPPLIER_ID                                                                                           NOT NULL NUMBER(10)&lt;br /&gt;
 SUPPLIER_NAME                                                                                         NOT NULL VARCHAR2(50)&lt;br /&gt;
 CONTACT_NAME                                                                                           VARCHAR2(50)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     drop table products cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;     drop table supplier cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create table with foreign key==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create a foreign key&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     CREATE TABLE supplier&lt;br /&gt;
  2      (      supplier_id     numeric(10)     not null,&lt;br /&gt;
  3             supplier_name   varchar2(50)    not null,&lt;br /&gt;
  4             contact_name    varchar2(50),&lt;br /&gt;
  5             CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)&lt;br /&gt;
  6      );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     CREATE TABLE products&lt;br /&gt;
  2      (      product_id      numeric(10)     not null,&lt;br /&gt;
  3             supplier_id     numeric(10)     not null,&lt;br /&gt;
  4             CONSTRAINT fk_supplier&lt;br /&gt;
  5               FOREIGN KEY (supplier_id)&lt;br /&gt;
  6               REFERENCES supplier(supplier_id)&lt;br /&gt;
  7      );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     desc products;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 PRODUCT_ID                                                                                            NOT NULL NUMBER(10)&lt;br /&gt;
 SUPPLIER_ID                                                                                           NOT NULL NUMBER(10)&lt;br /&gt;
SQL&amp;gt;     desc supplier;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 SUPPLIER_ID                                                                                           NOT NULL NUMBER(10)&lt;br /&gt;
 SUPPLIER_NAME                                                                                         NOT NULL VARCHAR2(50)&lt;br /&gt;
 CONTACT_NAME                                                                                           VARCHAR2(50)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     drop table products cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;     drop table supplier cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Declaring a Foreign Key==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable (myTableID INT PRIMARY KEY NOT NULL,&lt;br /&gt;
  2                       Name VARCHAR(50));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Phone (&lt;br /&gt;
  2     PhoneID INT PRIMARY KEY NOT NULL,&lt;br /&gt;
  3     myTableID INT,&lt;br /&gt;
  4     PhoneNo VARCHAR(20),&lt;br /&gt;
  5     CONSTRAINT FID_FK FOREIGN KEY(myTableID)&lt;br /&gt;
  6        REFERENCES myTable(myTableID));&lt;br /&gt;
Table created.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Referential Integrity Constraints==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table department (&lt;br /&gt;
  2      Dept_no  NUMBER(3) primary key,&lt;br /&gt;
  3      Dept_name   VARCHAR2(15),&lt;br /&gt;
  4      Location     VARCHAR2(25),&lt;br /&gt;
  5      CONSTRAINT Dept_name_ukey UNIQUE (Dept_Name,Location));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employee (&lt;br /&gt;
  2  Employee_id    number (7),&lt;br /&gt;
  3  Last_name      varchar2(30),&lt;br /&gt;
  4  First_name     varchar2(30),&lt;br /&gt;
  5  Job            varchar2(15),&lt;br /&gt;
  6  Department_id  number (3) NOT NULL&lt;br /&gt;
  7                 Constraint dept_fkey REFERENCES department(dept_NO));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table department cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Violate a foreign key==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table p ( pk  int primary key )&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; create table c&lt;br /&gt;
  2  ( fk  constraint c_fk&lt;br /&gt;
  3        references p(pk)&lt;br /&gt;
  4        deferrable&lt;br /&gt;
  5        initially immediate&lt;br /&gt;
  6  )&lt;br /&gt;
  7  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into p values ( 1 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into c values ( 1 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update p set pk = 2;&lt;br /&gt;
update p set pk = 2&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02292: integrity constraint (sqle.C_FK) violated - child record found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set constraint c_fk deferred;&lt;br /&gt;
Constraint set.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update p set pk = 2;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set constraint c_fk immediate;&lt;br /&gt;
set constraint c_fk immediate&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02291: integrity constraint (sqle.C_FK) violated - parent key not found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update c set fk = 2;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set constraint c_fk immediate;&lt;br /&gt;
Constraint set.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table p;&lt;br /&gt;
drop table p&lt;br /&gt;
           *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02449: unique/primary keys in table referenced by foreign keys&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; drop table c;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>