我觉得不必要区分,这两种约束的唯一区别就是建表时定义的位置不同。
如:CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT,
CONSTRAINT CK_JOB CHECK(JOB IN('CLERK','SALESMAN','MANAGER','ANALYST')));在上面的约束中,约束PK_DEPT,PK_EMP,FK_DEPTNO都是列约束,而CK_JOB是表约束。
同意snowy_howe(天下有雪)所说的:列制约都可以用表制约来实现,但是限制多列的子句必然是表约束。
另外,列约束可以指定约束名称,如上面的约束PK_DEPT和PK_EMP。
查询约束的视图是USER_CONSTRAINTS。
如:CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT,
CONSTRAINT CK_JOB CHECK(JOB IN('CLERK','SALESMAN','MANAGER','ANALYST')));在上面的约束中,约束PK_DEPT,PK_EMP,FK_DEPTNO都是列约束,而CK_JOB是表约束。
同意snowy_howe(天下有雪)所说的:列制约都可以用表制约来实现,但是限制多列的子句必然是表约束。
另外,列约束可以指定约束名称,如上面的约束PK_DEPT和PK_EMP。
查询约束的视图是USER_CONSTRAINTS。
解决方案 »
- lag查询疑问
- 求一个两表连接的update语句
- oracle登录时候的 错误,如何解决,急~!~~~~
- 求一条有点难度的SQL函数 ..进 者有分.大家近来看看吧
- 怎样优化这个表?
- 安装9i时,到启动database configuration assistant时完成不了,怎么解决?
- 不安装Oracle9i客户端软件,编译程序如何连接服务器上的Oracle数据库???
- 用PL/SQL的问题
- oracle客户端通过网连接oracle 服务端需要启什么服务??
- 我如何知道当前数据库有哪些用户表
- ORACLE817中的HTTP SERVER?
- 初学Oracle,想了解一些Oracle的基本概念(象表空间,方案,例程等),不知道那里有
另外,那知道那里可以当到关于Oracle认证的电子书。