Reposting the processing method of Oracle primary keyhttp://www.cnblogs.com/Richardzhu/p/3470929.html Oracle's primary key creation, addition and deletion operations

Oracle's primary key creation, addition, deletion operations

 

1. Create a primary key constraint while creating a table

    1.1, no name

copy code
SQL> create table jack (id int primary key not null,name varchar2(20));
 
Table created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           SYS_C0011100
copy code

    1.2, named

copy code
SQL> create table jack (id int ,name varchar2(20),constraint ixd_id primary key(id));
 
Table created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IXD_ID
copy code


2. Add a primary key constraint to the table

copy code
SQL> create table jack as select * from dba_objects;
 
Table created
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER        Y                         
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> alter table jack add constraint pk_id primary key(object_id);
 
Table altered
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           PK_ID
copy code

---- In addition, the effect of adding the primary key after the index is created:

copy code
SQL> create table jack as select * from dba_objects;
 
Table created
 
SQL> create index ind_object_id on jack(object_id);
 
Index created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IND_OBJECT_ID
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER        Y                         
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> alter table jack add constraint pk_id primary key(object_id);
 
Table altered
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER                                  
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IND_OBJECT_ID
copy code

3. Modify the primary key constraint

    3.1, disable/enable the primary key

copy code
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
 
SQL> alter table jack disable primary key;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
 
SQL> alter table jack enable primary key;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
copy code

    3.2, heavy naming primary key

copy code
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
 
SQL> alter table jack rename constraint pk_id to pk_jack_id;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_JACK_ID                     P               ENABLED
copy code

Fourth, delete the existing primary key constraint in the table

    4.1, no name

copy code
----First use the user_cons_columns table to find the primary key name:
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ----------------
JACK                           SYS_C0011105                   JACK                           ID
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           SYS_C0011105
SQL> alter table jack drop constraint SYS_C0011105;
 
Table altered
copy code

    4.2. Named

copy code
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------
JACK                           IXD_ID                         JACK                           ID
 
SQL> alter table jack drop constraint IXD_ID;
 
Table altered
 
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------
 
copy code

1. Create a primary key constraint while creating a table

    1.1, no name

copy code
SQL> create table jack (id int primary key not null,name varchar2(20));
 
Table created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           SYS_C0011100
copy code

    1.2, named

copy code
SQL> create table jack (id int ,name varchar2(20),constraint ixd_id primary key(id));
 
Table created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IXD_ID
copy code


2. Add a primary key constraint to the table

copy code
SQL> create table jack as select * from dba_objects;
 
Table created
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER        Y                         
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> alter table jack add constraint pk_id primary key(object_id);
 
Table altered
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           PK_ID
copy code

---- In addition, the effect of adding the primary key after the index is created:

copy code
SQL> create table jack as select * from dba_objects;
 
Table created
 
SQL> create index ind_object_id on jack(object_id);
 
Index created
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IND_OBJECT_ID
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER        Y                         
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> alter table jack add constraint pk_id primary key(object_id);
 
Table altered
 
SQL> desc jack;
Name           Type          Nullable Default Comments
-------------- ------------- -------- ------- --------
OWNER          VARCHAR2(30)  Y                         
OBJECT_NAME    VARCHAR2(128) Y                         
SUBOBJECT_NAME VARCHAR2(30)  Y                         
OBJECT_ID      NUMBER                                  
DATA_OBJECT_ID NUMBER        Y                         
OBJECT_TYPE    VARCHAR2(19)  Y                         
CREATED        DATE          Y                         
LAST_DDL_TIME  DATE          Y                         
TIMESTAMP      VARCHAR2(19)  Y                         
STATUS         VARCHAR2(7)   Y                         
TEMPORARY      VARCHAR2(1)   Y                         
GENERATED      VARCHAR2(1)   Y                         
SECONDARY VARCHAR2 (1) Y                         
NAMESPACE      NUMBER        Y                         
EDITION_NAME   VARCHAR2(30)  Y                         
 
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           IND_OBJECT_ID
copy code

3. Modify the primary key constraint

    3.1, disable/enable the primary key

copy code
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
 
SQL> alter table jack disable primary key;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
 
SQL> alter table jack enable primary key;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
copy code

    3.2, heavy naming primary key

copy code
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_ID                          P               ENABLED
 
SQL> alter table jack rename constraint pk_id to pk_jack_id;
 
Table altered
 
SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
 
TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
------------------------------ ------------------------------ ------------------------------ --------------- --------
JACK                           PK_ID                          PK_JACK_ID                     P               ENABLED
copy code

Fourth, delete the existing primary key constraint in the table

    4.1, no name

copy code
----First use the user_cons_columns table to find the primary key name:
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ----------------
JACK                           SYS_C0011105                   JACK                           ID
SQL> select table_name,index_name from user_indexes where table_name='JACK';
 
TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
JACK                           SYS_C0011105
SQL> alter table jack drop constraint SYS_C0011105;
 
Table altered
copy code

    4.2. Named

copy code
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------
JACK                           IXD_ID                         JACK                           ID
 
SQL> alter table jack drop constraint IXD_ID;
 
Table altered
 
SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
 
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------
 
copy code

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325261538&siteId=291194637