<?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%2FUnique</id>
		<title>Oracle PL/SQL/Constraints/Unique - История изменений</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%2FUnique"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Unique&amp;action=history"/>
		<updated>2026-05-24T21:26:35Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Constraints/Unique&amp;diff=2564&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/Unique&amp;diff=2564&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/Unique&amp;diff=2565&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/Unique&amp;diff=2565&amp;oldid=prev"/>
				<updated>2010-05-26T10:01:59Z</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 unique 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;&lt;br /&gt;
SQL&amp;gt; set echo off&lt;br /&gt;
SQL&amp;gt; create table emp(&lt;br /&gt;
  2           emp_id            integer     primary key using index (create index pk_idx on emp(emp_id) )&lt;br /&gt;
  3          ,lastname               varchar2(20)   constraint lastname_create_nn not null&lt;br /&gt;
  4          ,firstname              varchar2(15)   constraint firstname_create_nn not null&lt;br /&gt;
  5          ,midinit                varchar2(1)&lt;br /&gt;
  6          ,street                 varchar2(30)&lt;br /&gt;
  7          ,city                   varchar2(20)&lt;br /&gt;
  8          ,state                  varchar2(2)&lt;br /&gt;
  9          ,zip                    varchar2(5)&lt;br /&gt;
 10          ,shortZipCode           varchar2(4)&lt;br /&gt;
 11          ,area_code              varchar2(3)&lt;br /&gt;
 12          ,phone                  varchar2(8)&lt;br /&gt;
 13          ,company_name           varchar2(50)&lt;br /&gt;
 14          ,constraint unique_emp_phone unique(phone) using index (create index emp_phone_u_idx on emp(phone))&lt;br /&gt;
 15          );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select index_name, table_name, column_name from user_ind_columns where table_name = &amp;quot;emp&amp;quot;;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select constraint_name, table_name, column_name from user_cons_columns where table_name = &amp;quot;emp&amp;quot;;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp             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;
==Add unique containt to a varchar2 type 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 inventory(&lt;br /&gt;
  2  partno number(4) constraint invent_partno_pk primary key,&lt;br /&gt;
  3  partdesc varchar2(35) constraint invent_partdesc_uq unique);&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; drop table inventory;&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;
==A unique constraint can be extended over multiple columns==&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; -- A unique constraint can be extended over multiple columns:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable (&lt;br /&gt;
  2    a number,&lt;br /&gt;
  3    b number,&lt;br /&gt;
  4    c number,&lt;br /&gt;
  5    unique (a,b)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4, 3,  5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4, 1,  5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4, 2,  5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4, 3,  5);&lt;br /&gt;
insert into myTable values (4, 3,  5)&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00001: unique constraint (SYS.SYS_C004360) violated&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myTable;&lt;br /&gt;
         A          B          C&lt;br /&gt;
---------- ---------- ----------&lt;br /&gt;
         4          3          5&lt;br /&gt;
         4          1          5&lt;br /&gt;
         4          2          5&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&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;
==Create a table with &amp;quot;unique deferrable initially immediate&amp;quot;==&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 inventory(&lt;br /&gt;
  2  partno number(4) constraint partno_pk primary key deferrable initially immediate,&lt;br /&gt;
  3  partdesc varchar2(35) constraint partdesc_uq unique deferrable initially immediate);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table inventory;&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==if a column is not explicitely defined as not null, nulls can be inserted multiple times==&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; --Unique Key&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable (&lt;br /&gt;
  2    a number unique,&lt;br /&gt;
  3    b number&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; desc myTable;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 A                                                                                                      NUMBER&lt;br /&gt;
 B                                                                                                      NUMBER&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- if a column is not explicitely defined as not null, nulls can be inserted multiple times:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4,   5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4,   1);&lt;br /&gt;
insert into myTable values (4,   1)&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00001: unique constraint (SYS.SYS_C004353) violated&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; insert into myTable values (9,   8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (6,   9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (null,9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (null,9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myTable;&lt;br /&gt;
         A          B&lt;br /&gt;
---------- ----------&lt;br /&gt;
         4          5&lt;br /&gt;
         9          8&lt;br /&gt;
         6          9&lt;br /&gt;
                    9&lt;br /&gt;
                    9&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&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-00001: unique constraint (JAVA2S.JOB_UNIQUE_IN_TEAMID) violated==&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 emp&lt;br /&gt;
  2  (emp_ID number primary key,&lt;br /&gt;
  3   teamid number,&lt;br /&gt;
  4   job varchar2(100),&lt;br /&gt;
  5   status varchar2(20) check (status in (&amp;quot;ACTIVE&amp;quot;, &amp;quot;INACTIVE&amp;quot;))&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 UNIQUE index job_unique_in_teamid on emp&lt;br /&gt;
  2  ( case when status = &amp;quot;ACTIVE&amp;quot; then teamid else null end,&lt;br /&gt;
  3    case when status = &amp;quot;ACTIVE&amp;quot; then job    else null end&lt;br /&gt;
  4  )&lt;br /&gt;
  5  /&lt;br /&gt;
Index created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,teamid,job,status)values( 1, 10, &amp;quot;a&amp;quot;, &amp;quot;ACTIVE&amp;quot; );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,teamid,job,status)values( 2, 10, &amp;quot;a&amp;quot;, &amp;quot;ACTIVE&amp;quot; );&lt;br /&gt;
insert into emp(emp_id,teamid,job,status)values( 2, 10, &amp;quot;a&amp;quot;, &amp;quot;ACTIVE&amp;quot; )&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00001: unique constraint (sqle.JOB_UNIQUE_IN_TEAMID) violated&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update emp&lt;br /&gt;
  2     set status = &amp;quot;INACTIVE&amp;quot;&lt;br /&gt;
  3    where emp_id = 1&lt;br /&gt;
  4      and teamid = 10&lt;br /&gt;
  5      and status = &amp;quot;ACTIVE&amp;quot;;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,teamid,job,status)values( 2, 10, &amp;quot;a&amp;quot;, &amp;quot;ACTIVE&amp;quot; );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&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;
==Setting a Unique 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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable (&lt;br /&gt;
  2     Name    VARCHAR(50) NOT NULL,&lt;br /&gt;
  3     PhoneNo VARCHAR(15) DEFAULT &amp;quot;Unknown Phone&amp;quot; NOT NULL,&lt;br /&gt;
  4     CONSTRAINT MyUniqueKey UNIQUE (Name)&lt;br /&gt;
  5  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&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;
==Unique value 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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t  ( x int unique );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into t values ( 1 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into t values ( 2 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; update t set x = x+1;&lt;br /&gt;
2 rows updated.&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vialate the unique contraint: try to insert the same value==&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; --Unique Key&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable (&lt;br /&gt;
  2    a number unique,&lt;br /&gt;
  3    b number&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; desc myTable;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 A                                                                                                      NUMBER&lt;br /&gt;
 B                                                                                                      NUMBER&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myTable values (4,   5);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (2,   1);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (2,   1); -- Dup&lt;br /&gt;
  2  insert into myTable values (9,   8);&lt;br /&gt;
insert into myTable values (2,   1); -- Dup&lt;br /&gt;
                                   *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00911: invalid character&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; insert into myTable values (6,   9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (null,9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into myTable values (null,9);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myTable;&lt;br /&gt;
         A          B&lt;br /&gt;
---------- ----------&lt;br /&gt;
         4          5&lt;br /&gt;
         2          1&lt;br /&gt;
         6          9&lt;br /&gt;
                    9&lt;br /&gt;
                    9&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>