Oracle PL/SQL Tutorial/System Tables Data Dictionary/all cons columns

Материал из SQL эксперт
Перейти к: навигация, поиск

Get information on all the column constraints you have access to using all_cons_columns.

SQL>
SQL> desc all_cons_columns;
 Name              Null?    Type
 ------------------
 OWNER             NOT NULL VARCHAR2(30)
 CONSTRAINT_NAME   NOT NULL VARCHAR2(30)
 TABLE_NAME        NOT NULL VARCHAR2(30)
 COLUMN_NAME                VARCHAR2(4000)
 POSITION                   NUMBER
SQL>
SQL> --select * from all_cons_columns;
SQL>


Join user_constraints and user_cons_columns to get the column_name, constraint_name, constraint_type, and status

SQL>
SQL>
SQL> -- create demo table
SQL> create table myTable(
  2    id           NUMBER(2),
  3    value        NUMBER(6,2)
  4  )
  5  /
Table created.
SQL>
SQL> -- prepare data
SQL> insert into myTable(ID,  value)values (1,9)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (2,2.11)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (3,3.44)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (4,-4.21)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (5,10)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (6,3)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (7,-5.88)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (8,123.45)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (9,98.23)
  2  /
1 row created.
SQL>
SQL> select * from myTable
  2  /
        ID      VALUE
---------- ----------
         1          9
         2       2.11
         3       3.44
         4      -4.21
         5         10
         6          3
         7      -5.88
         8     123.45
         9      98.23
9 rows selected.
SQL>
SQL>
SQL>
SQL> ALTER TABLE myTable
  2  ADD CONSTRAINT uq UNIQUE (id)
  3  DEFERRABLE INITIALLY DEFERRED;
Table altered.
SQL>
SQL>
SQL> SELECT ucc.column_name, ucc.constraint_name, uc.constraint_type, uc.status
  2  FROM user_constraints uc, user_cons_columns ucc
  3  WHERE uc.table_name = ucc.table_name
  4  AND uc.constraint_name = ucc.constraint_name
  5  AND ucc.table_name = "MYTABLE";
COLUMN_NAME          CONSTRAINT_NAME                C STATUS
------------------------------ - --------
ID                   UQ                             U ENABLED

SQL>
SQL>
SQL> -- clean the table
SQL> drop table myTable
  2  /
Table dropped.
SQL>
SQL>
SQL>