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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Primary_Key&amp;diff=2572&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Primary_Key&amp;diff=2572&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://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Primary_Key&amp;diff=2573&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Create_Primary_Key&amp;diff=2573&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:00Z</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;==Create a foreign key &amp;quot;set null on delete&amp;quot; with more than one field, and use desc to check==&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Create a foreign key &amp;quot;set null on delete&amp;quot; with more than one field&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),&lt;br /&gt;
  4             supplier_name   varchar2(50),&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              ON DELETE SET NULL&lt;br /&gt;
  9      );&lt;br /&gt;
Table created.&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                                                                                            NUMBER(10)&lt;br /&gt;
 SUPPLIER_NAME                                                                                          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;&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;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==One-to-one using a primary-key and foreign-key relationship==&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 Office&lt;br /&gt;
  2     (office_id        VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3      building_name    VARCHAR2(20),&lt;br /&gt;
  4      PRIMARY KEY (office_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Programmer&lt;br /&gt;
  2     (lect_id    VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3      lect_name  VARCHAR2(20),&lt;br /&gt;
  4      office_id  VARCHAR2(10),&lt;br /&gt;
  5      PRIMARY KEY (lect_id),&lt;br /&gt;
  6      FOREIGN KEY (office_id) REFERENCES Office (office_id)&lt;br /&gt;
  7      ON DELETE CASCADE);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Office cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table Programmer cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&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;
==ORA-12991: column is referenced in a multi-column constraint==&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; create table registrations&lt;br /&gt;
  2   ( attendee    NUMBER(4)&lt;br /&gt;
  3   , course      VARCHAR2(6)&lt;br /&gt;
  4   , begindate   DATE&lt;br /&gt;
  5   , evaluation  NUMBER(1)&lt;br /&gt;
  6   , constraint  R_PK        primary key (attendee,course,begindate)&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;&lt;br /&gt;
SQL&amp;gt; alter table registrations&lt;br /&gt;
  2   drop  column begindate;&lt;br /&gt;
 drop  column begindate&lt;br /&gt;
              *&lt;br /&gt;
ERROR at line 2:&lt;br /&gt;
ORA-12991: column is referenced in a multi-column constraint&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table registrations;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&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;
==Set primary key when declaring a column==&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 t&lt;br /&gt;
  2  ( x int primary key ,&lt;br /&gt;
  3    y date,&lt;br /&gt;
  4    z clob )&lt;br /&gt;
  5  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&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;
==Use three columns as primary 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 registrations&lt;br /&gt;
  2  ( attendee    NUMBER(4)&lt;br /&gt;
  3  , course      VARCHAR2(6)&lt;br /&gt;
  4  , begindate   DATE&lt;br /&gt;
  5  , evaluation  NUMBER(1)&lt;br /&gt;
  6  , constraint  R_PK        primary key (attendee,course,begindate)&lt;br /&gt;
  7  ) ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into registrations values (2,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-04-12&amp;quot;,4   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (14,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-04-12&amp;quot;,5   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (6,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-04-12&amp;quot;,4   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (11,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-04-12&amp;quot;,2   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (8,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-10-04&amp;quot;,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (9,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-10-04&amp;quot;,3   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (13,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-10-04&amp;quot;,4   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (13,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-12-13&amp;quot;,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (6,&amp;quot;SQL&amp;quot;,date &amp;quot;2009-12-13&amp;quot;,NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into registrations values (3,&amp;quot;OAU&amp;quot;,date &amp;quot;2009-08-10&amp;quot;,4   );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select evaluation&lt;br /&gt;
  2  from   registrations&lt;br /&gt;
  3  where  attendee = 8&lt;br /&gt;
  4  order  by evaluation;&lt;br /&gt;
EVALUATION&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table registrations;&lt;br /&gt;
Table dropped.&lt;br /&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;
==Using a CREATE TABLE statement: create a table with primary 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;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --Using a CREATE TABLE statement&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; 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 supplier;&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;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Violate the primary key and foreign key relation==&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 parent( pk int,constraint parent_pk primary key(pk) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; create table child ( fk,constraint child_fk foreign key(fk)&lt;br /&gt;
  2                          references parent deferrable );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; insert into parent values( 1 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into child values( 1 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; commit;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt; update parent set pk = 2;&lt;br /&gt;
update parent set pk = 2&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02292: integrity constraint (SYS.CHILD_FK) violated - child record found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; update child set fk = 2;&lt;br /&gt;
update child set fk = 2&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02291: integrity constraint (SYS.CHILD_FK) violated - parent key not found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; set constraints child_fk deferred;&lt;br /&gt;
Constraint set.&lt;br /&gt;
SQL&amp;gt; update parent set pk=2;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt; select * from parent;&lt;br /&gt;
        PK&lt;br /&gt;
----------&lt;br /&gt;
         2&lt;br /&gt;
SQL&amp;gt; select * from child;&lt;br /&gt;
        FK&lt;br /&gt;
----------&lt;br /&gt;
         1&lt;br /&gt;
SQL&amp;gt; commit;&lt;br /&gt;
commit&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02091: transaction rolled back&lt;br /&gt;
ORA-02292: integrity constraint (SYS.CHILD_FK) violated - child record found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; set constraints child_fk deferred;&lt;br /&gt;
Constraint set.&lt;br /&gt;
SQL&amp;gt; update parent set pk=2;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt; select * from parent;&lt;br /&gt;
        PK&lt;br /&gt;
----------&lt;br /&gt;
         2&lt;br /&gt;
SQL&amp;gt; select * from child;&lt;br /&gt;
        FK&lt;br /&gt;
----------&lt;br /&gt;
         1&lt;br /&gt;
SQL&amp;gt; set constraints child_fk immediate;&lt;br /&gt;
set constraints child_fk immediate&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-02291: integrity constraint (SYS.CHILD_FK) violated - parent key not found&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; update child set fk = 2;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt; set constraints child_fk immediate;&lt;br /&gt;
Constraint set.&lt;br /&gt;
SQL&amp;gt; commit;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt; select * from parent;&lt;br /&gt;
        PK&lt;br /&gt;
----------&lt;br /&gt;
         2&lt;br /&gt;
SQL&amp;gt; select * from child;&lt;br /&gt;
        FK&lt;br /&gt;
----------&lt;br /&gt;
         2&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table child cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table parent cascade constraints;&lt;br /&gt;
Table dropped.&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>