7,not null约束(只能在字段级定义NOT NULL约束,在同一个表中可以定义多个NOT NULL约束)
SQL> alter table employees modify deptno not null/null //语法
SQL> alter table bkeep5 modify department_id not null;
alter table bkeep5 modify department_id not null
*
ERROR at line 1:
ORA-02296: cannot enable (ZBB.) - null values found //如果表中已经存在null,就不能更改其为not null约束
SQL> alter table bkeep5 modify email null;
Table altered.
添加foreign key约束(多字段/表级)
SQL> alter table employees
add constraint emp_jobs_fk foreign key (job,deptno)
references jobs (jobid,deptno)
on delete cascade //指定父表删除记录时子表如何处理!
【重要】更改foreign key约束定义的引用行为(delete cascade/delete set null/delete no action),默认是delete on action
引用行为(当主表中一条记录被删除时,确定如何处理子表中的外部码字段):
delete cascade : 删除子表中所有的相关记录
delete set null : 将所有相关记录的外部码字段值设置为NULL
delete no action: 不做任何操作
10,先删除原来的外键约束,再添加约束
SQL> select constraint_name,table_name from user_constraints;
CONSTRAINT_NAME TABLE_NAME
------------------------------ ------------------------------
SYS_C0017204 BKEEP1
EMP_PK BKEEP2
SQL> alter table bkeep2 drop constraint emp_pk
Table altered.
SQL> ALTER TABLE employees DROP CONSTRAINT emp_deptno_fk;
SQL> ALTER TABLE employees ADD CONSTRAINT emp_deptno_fk FOREIGN KEY(deptno) REFERENCES dept(deptno) ON DELETE CASCADE;
·all_cons_columns/dba/user 约束对应的字段信息
SQL> desc user_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> col constraint_name format a24
SQL> col column_name format a30
SQL> select constraint_name,column_name from user_cons_columns;
CONSTRAINT_NAME COLUMN_NAME
------------------------ ------------------------------
SYS_C0017219 LAST_NAME
SYS_C0017221 HIRE_DATE
SYS_C0017222 JOB_ID
EMP_ENAME_PHONE_UK ENAME
EMP_ENAME_PHONE_UK PHONE
本文转载自http://space.itpub.net/22238176/viewspace-665361
China wholesale shoes,jordan shoes, handbag http://www.buyonstore.com