新一篇: Oracle数据库的安全性措施概述
一、Oracle中的实体完整性 Oracle在CREATE TABLE语句中提供了PRIMARY KEY子句,供用户在建表时指定关系的主码列。例如,在学生-选课数据库中,要定义Student表的Sno为主码,可使用如下语句:
 CREATETABLE student
CREATETABLE student
 (sno NUMBER(8),
      (sno NUMBER(8),
 sanme VARCHAR(20),
       sanme VARCHAR(20),
 sage NUMBER(20),
       sage NUMBER(20),
 CONSTRAINT pk_sno PRIMARYKEY(sno));
CONSTRAINT pk_sno PRIMARYKEY(sno));
其中,PRIMARY KEY(Sno)表示是Student表的主码。PK_SNO是此主码约束名。
若要在SC表中定义(Sno,Cno)为主码,则用下面语句建立SC表:
 CREATETABLE sc
CREATETABLE sc
 (sno NUMBER(8),
      (sno NUMBER(8),
 cno NUMBER(2),
       cno NUMBER(2),
 grade NUMBER(2),
       grade NUMBER(2),
 CONSTRAINT pk_sc PRIMARYKEY(sno,cno));
CONSTRAINT pk_sc PRIMARYKEY(sno,cno));
用PRIMARY KEY语句定义了关系的主码后,每当用户程序对主码列进行更新操作时,系统自动进行完整性检查,凡操作使主码值为空或使主码值在表中不唯一,系统拒绝此操作,从而保证了实体完整性。
二、Oracle中的参照完整性 Oracle的CREATE TABLE语句也可以定义参照完整性规则,即用FOREIGN KEY子句定义哪些列为外码列,用REFERENCES子句指明这些外码相应于哪个表的主码,用ON DELETE CASCADE子句指明在删除被参照关系的元组时,同时删除参照关系中相应的远祖。
例如,使用如下SQL语句建立EMP表:
 CREATETABLE emp
CREATETABLE emp
 (empno NUMBER(4),
      (empno NUMBER(4),
 ename VARCHAR(10),
       ename VARCHAR(10),
 job VARCHAR2(9),
       job VARCHAR2(9),
 mgr NUMBER(4),
       mgr NUMBER(4),
 sal NUMBER(7,2),
       sal NUMBER(7,2),
 deptno NUMBER(2),
       deptno NUMBER(2),
 CONSTRAINT fk_deptno
CONSTRAINT fk_deptno
 FOREIGNKEY(deptno)
FOREIGNKEY(deptno)
 REFERENCES dept(deptno));
REFERENCES dept(deptno));
则表明EMP是参照表,DEPT为其被参照表,EMP表中Deptno为外码,它相应于DEPT表中的主码Deptno。当删除或修改DEPT表中某个元组的主码时要检查EMP中是否有元组的DEPTNO值等于DEPT中要删除的元组的Deptno值,如没有,接受此操作;否则系统拒绝这一更新操作。
By admin
read more
 如果您使用了包含 OCI8 扩展的 PHP 编译版本,那么使用以下查询和方法将无需任何特殊的设置。使用数据库抽象类(例如
 如果您使用了包含 OCI8 扩展的 PHP 编译版本,那么使用以下查询和方法将无需任何特殊的设置。使用数据库抽象类(例如