Está en la página 1de 8

DEFINING CONSTRAINTS

SQL> CREATE TABLE EMPLOYEE(


2 EMPNO NUMBER(6),
3 ENAME VARCHAR2(20),
4 DEPTNO NUMBER(4) NOT NULL,
5 CONSTRAINT EMP_EMPNO_PK
6 PRIMARY KEY (EMPNO));
Table created.
********************************************************************************
THE NOT NULL CONSTRAINT
SQL> CREATE TABLE EMPLOYEE(
2 EMPNO NUMBER(6),
3 ENAME VARCHAR2(20) NOT NULL,
4 SAL NUMBER(8,2),
5 COMM NUMBER(2,2),
6 HIRE_DATE DATE
7 CONSTRAINT EMP_HIRE_DATE_NN NOT NULL);
Table created.
********************************************************************************
****
THE UNIQUE CONSTRAINT
SQL> ED
Wrote file afiedt.buf
1 CREATE TABLE EMPLOYEE(
2 EMPNO NUMBER(6),
3 ENAME VARCHAR2(20) NOT NULL,
4 EMAIL VARCHAR2(25),
5 SAL NUMBER(8,2),
6 COMM NUMBER(2,2),
7 HIRE_DATE DATE NOT NULL,
8* CONSTRAINT EMP_EMAIL_UK UNIQUE(EMAIL))
SQL> /
Table created.
********************************************************************************
*****
THE PRIMARY KEY CONSTRAINT
SQL> CREATE TABLE DEPT(
2 DEPTNO NUMBER(4),
3 DNAME VARCHAR2(30) CONSTRAINT DEPT_NAME_NN NOT NULL,
4 LOC VARCHAR2(20),
5 CONSTRAINT DEPTNO_PK PRIMARY KEY(DEPTNO));
Table created.
********************************************************************************
*********
THE FORIGN KEY CONSTRAINT
SQL> ED
Wrote file afiedt.buf
1 CREATE TABLE EMPLOYEE(
2 EMPNO NUMBER(6),
3 ENAME VARCHAR2(25) NOT NULL,
4 EMAIL VARCHAR2(25),
5 SAL NUMBER(8,2),
6 COMM NUMBER(2,2),
7 HIRE_DATE DATE NOT NULL,
8 DEPTNO NUMBER(4),
9 CONSTRAINT EMP_DEPTNO_FK FOREIGN KEY(DEPTNO)
10 REFERENCES DEPT(DEPTNO),
11* CONSTRAINT EMP_EMAIL_UK UNIQUE(EMAIL))
SQL> /
Table created.
********************************************************************************
THE CHECK CONSTRAINT
SQL> CREATE TABLE EMPLOYEE(
2 EMPNO NUMBER(4),
3 ENAME VARCHAR2(20),
4 SAL NUMBER(8,2)
5 CONSTRAINT EMP_SALARY CHECK(SAL >0));
Table created.
********************************************************************************
*
ADDING A CONSTRAINT SYNTAX
SQL> ALTER TABLE EMPLOYEE
2 ADD CONSTRAINT EMP_PK PRIMARY KEY(EMPNO);
Table altered.
********************************************************************************
ADDING A CONSTRAINT

SQL> CREATE TABLE DEPT(


2 DEPTNO NUMBER(6),
3 DNAME VARCHAR2(20) CONSTRAINT PP PRIMARY KEY);
Table created.
SQL> CREATE TABLE EMPLOYEE
2 ( EMPNO NUMBER(4),
3 ENAME VARCHAR2(30));
Table created.
SQL> ALTER TABLE EMPLOYEE
2 ADD CONSTRAINT FK FOREIGN KEY(ENAME)
3 REFERENCES DEPT(DNAME);
Table altered.
********************************************************************************
****
DROPPING A CONSTRAINT
SQL> ALTER TABLE EMPLOYEE
2 DROP CONSTRAINT FK;
Table altered.

SQL> ALTER TABLE DEPT


2 DROP PRIMARY KEY CASCADE;
Table altered.
********************************************************************************
****
DISABLING CONSTRAINTS
SQL> DESC EMPLOYEE
Name Null? Type
------------------------------- -------- ----
EMPNO NUMBER(4)
ENAME VARCHAR2(30)
SQL> ALTER TABLE EMPLOYEE
2 ADD CONSTRAINT PRK PRIMARY KEY(ENAME);
Table altered.
SQL> DESC EMPLOYEE
Name Null? Type
------------------------------- -------- ----
EMPNO NUMBER(4)
ENAME NOT NULL VARCHAR2(30)

SQL> ALTER TABLE EMPLOYEE


2 DISABLE CONSTRAINT PRK CASCADE;
Table altered.
********************************************************************************
**********
ENABLING CONSTRAINTS
SQL> ALTER TABLE EMPLOYEE
2 ENABLE CONSTRAINT PRK;
Table altered.
********************************************************************************
**********

CASCADING CONSTRAINTS
SQL> CREATE TABLE TEST1(
2 PK NUMBER PRIMARY KEY,
3 FK NUMBER,
4 COL1 NUMBER,
5 COL2 NUMBER,
6 CONSTRAINT FK_CONSTRAINT FOREIGN KEY(FK) REFERENCES TEST1,
7 CONSTRAINT CK1 CHECK(PK>0 AND COL1 > 0),
8 CONSTRAINT CK2 CHECK (COL2 > 0));
Table created.

SQL> ALTER TABLE TEST1 DROP(PK);


ALTER TABLE TEST1 DROP(PK)
*
ERROR at line 1:
ORA-12992: cannot drop parent key column

SQL> ALTER TABLE TEST1 DROP(COL1);


ALTER TABLE TEST1 DROP(COL1)
*
ERROR at line 1:
ORA-12991: column is referenced in a multi-column constraint
********************************************************************************
*************
CASCADING CONSTRAINTS
SQL> ALTER TABLE TEST1
2 DROP (pK) CASCADE CONSTRAINTS;
Table altered.
SQL> ALTER TABLE TEST1
2 DROP (PK, FK, COL1) CASCADE CONSTRAINTS;
DROP (PK, FK, COL1) CASCADE CONSTRAINTS
*
ERROR at line 2:
ORA-00904: "PK": invalid identifier

SQL>
SQL> ALTER TABLE TEST1
2 DROP ( FK, COL1) CASCADE CONSTRAINTS;
Table altered.
********************************************************************************
*******
VIEWING CONSTRAINTS
SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,
2 SEARCH_CONDITION
3 FROM USER_CONSTRAINTS
4 WHERE TABLE_NAME = 'EMP';
CONSTRAINT_NAME C
------------------------------ -
SEARCH_CONDITION
------------------------------------------------------------------
SYS_C00125218 C
"EMPNO" IS NOT NULL
EMP_VALID_JOB C
job in ('CLERK','SALESMAN','MANAGER','ANALYST','PRESIDENT')
SYS_C00125220 P

SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,FROM USER_CONSTRAINTS


2 WHERE TABLE_NAME = 'EMP';
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,FROM USER_CONSTRAINTS
*
ERROR at line 1:
ORA-00936: missing expression

SQL> ED
Wrote file afiedt.buf
1 SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
2 FROM USER_CONSTRAINTS
3* WHERE TABLE_NAME = 'EMP'
SQL> /
CONSTRAINT_NAME C
------------------------------ -
SYS_C00125218 C
EMP_VALID_JOB C
SYS_C00125220 P
********************************************************************************
***********
VIEWING THE COLUMNS ASSOCIATED WITH CONSTRAINTS
SQL> ED
Wrote file afiedt.buf
1 SELECT CONSTRAINT_NAME, COLUMN_NAME
2 FROM USER_CONS_COLUMNS
3* WHERE TABLE_NAME = 'EMP'
4 /
CONSTRAINT_NAME
------------------------------
COLUMN_NAME
-----------------------------------------
EMP_VALID_JOB
JOB
SYS_C00125218
EMPNO
SYS_C00125220
EMPNO
********************************************************************************
**************

SQL> DESC EMPLOYEE


Name Null? Type
------------------------------- -------- ----
EMPNO NUMBER(4)
ENAME NOT NULL VARCHAR2(30)
SQL> DESC DEPT
Name Null? Type
------------------------------- -------- ----
DEPTNO NUMBER(6)
DNAME VARCHAR2(20)
SQL> ALTER TABLE DEPT
2 ADD CONSTRAINT FRK FOREIGN KEY(DNAME)
3 REFERENCE EMPLOYEE(ENAME);
REFERENCE EMPLOYEE(ENAME)
*
ERROR at line 3:
ORA-00905: missing keyword

SQL> ALTER TABLE DEPT


2 ADD CONSTRAINT FRK FOREIGN KEY(DNAME)
3 REFERENCES EMPLOYEE(ENAME);
Table altered.
SQL> INSERT INTO EMPLOYEE VALUES(&EMPNO,'&ENAME');
Enter value for empno: 10
Enter value for ename: RAM
old 1: INSERT INTO EMPLOYEE VALUES(&EMPNO,'&ENAME')
new 1: INSERT INTO EMPLOYEE VALUES(10,'RAM')
1 row created.
SQL> /
Enter value for empno: 20
Enter value for ename: FIAZ
old 1: INSERT INTO EMPLOYEE VALUES(&EMPNO,'&ENAME')
new 1: INSERT INTO EMPLOYEE VALUES(20,'FIAZ')
1 row created.
SQL> /
Enter value for empno: 30
Enter value for ename: VINO
old 1: INSERT INTO EMPLOYEE VALUES(&EMPNO,'&ENAME')
new 1: INSERT INTO EMPLOYEE VALUES(30,'VINO')
1 row created.
SQL> SELECT * FROM EMPLOYEE;
EMPNO ENAME
--------- ------------------------------
10 RAM
20 FIAZ
30 VINO
SQL> INSERT INTO DEPT VALUES(&DEPTNO,'&DNAME');
Enter value for deptno: 10
Enter value for dname: RAM
old 1: INSERT INTO DEPT VALUES(&DEPTNO,'&DNAME')
new 1: INSERT INTO DEPT VALUES(10,'RAM')
1 row created.
SQL> ALTER TABLE EMPLOYEE
2 DISABLE CONSTRAINT PRK;
ALTER TABLE EMPLOYEE
*
ERROR at line 1:
ORA-02297: cannot disable constraint (SCOTT.PRK) - dependencies exist

SQL> ALTER TABLE DEPT


2 DISABLE CONSTRAINT FRK;
Table altered.
SQL> INSERT INTO DEPT VALUES(&DEPTNO,'&DNAME');
Enter value for deptno: 40
Enter value for dname: SARA
old 1: INSERT INTO DEPT VALUES(&DEPTNO,'&DNAME')
new 1: INSERT INTO DEPT VALUES(40,'SARA')
1 row created.
SQL> SELECT * FROM DEPT;
DEPTNO DNAME
--------- --------------------
10 RAM
40 SARA
SQL> SELECT * FROM EMPLOYEE
2 ;
EMPNO ENAME
--------- ------------------------------
10 RAM
20 FIAZ
30 VINO
SQL> ALTER TABLE DEPT
2 ENABLE CONSTRAINT FRK;
ENABLE CONSTRAINT FRK
*
ERROR at line 2:
ORA-02298: cannot validate (SCOTT.FRK) - parent keys not found

SQL> SELECT * FROM USER_CONSTRAINTS


2 WHERE TABLE_NAME='EMPLOYEE';
OWNER CONSTRAINT_NAME C TABLE_NAME
------------------------------ ------------------------------ - ----------------
--------------
SEARCH_CONDITION
--------------------------------------------------------------------------------
R_OWNER R_CONSTRAINT_NAME DELETE_RU STATUS
DEFERRABLE
------------------------------ ------------------------------ --------- --------
--------------
DEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE INDEX_OWNER
--------- ------------- -------------- --- ---- --------------- ----------------
--------------
INDEX_NAME INVALID VIEW_RELATED
------------------------------ ------- --------------
SCOTT SYS_C00155512 C EMPLOYEE
"DEPTNO" IS NOT NULL
ENABLED
NOT DEFERRABLE
IMMEDIATE VALIDATED GENERATED NAME 01-FEB-08

SCOTT EMP_EMPNO_PK P EMPLOYEE


ENABLED
NOT DEFERRABLE
IMMEDIATE VALIDATED USER NAME 01-FEB-08 SCOTT
EMP_EMPNO_PK

SQL> SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='EMPLOYEE';


OWNER CONSTRAINT_NAME TABLE_NAME
------------------------------ ------------------------------ ------------------
------------
COLUMN_NAME
--------------------------------------------------------------------------------
----------------
POSITION
---------
SCOTT EMP_EMPNO_PK EMPLOYEE
EMPNO
1
SCOTT SYS_C00155512 EMPLOYEE
DEPTNO

También podría gustarte