oracle主键的设置方法
来源: 阅读:2899 次 日期:2015-03-20 11:15:04
温馨提示: 小编为您整理了“oracle主键的设置方法”,方便广大网友查阅!

主键:

1.主键约束: 一个表只能有一个主键约束。主键可以是单个字段,也可以是多个字段。无论是哪种情况,其所有字段都是NOT NULL。

2.Unique约束:一个表可以有多个Unique约束,Unique的字段可以为NULL。

3.主键与Unique:不同点在于一个表只能有一个主键约束,但是可以有多个Unique约束;主键所有字段都是not null,unique可以是

null;相同点在于都能保证唯一性。

4.主键、Unique与索引:主键约束与Unique约束默认会成为索引。当主键和Unique有多个字段时,有索引前缀性问题,即where语

句中的条件必须有主键或者unique的第一个字段,否则不会使用索引。

5. 外键与主键、Unique:外键必须为另外一张表(父表)的主键或者唯一索引。如果要添加记录,而父表中没有则报错。反之,如

果要删除父表中的记录,而子表中有记录,也会报错。但是如果在创建外键约束时,如果使用on delete cascade,则删除父表中数据时

,不报错而直接把子表关联的数据删除。

如果要删除父表,则需要加上cascade constraints,此时子表的foreign key被去除,表中记录保持不变。

外键:

外键是该表是另一个表之间联接的字段

外键必须为另一个表中的主键

外键的用途是确保数据的完整性。它通常包括以下几种:

实体完整性,确保每个实体是唯一的(通过主键来实施).

oracle主键的设置方法有2种:

一种是设置自增长主键,另一种是生成唯一序列;

1.自增长主键

SQL> create table Prim_key_Increase_Test(

2 id number(10) primary key,

3 name varchar2(30)

4 );

表已创建。

SQL> create sequence Prim_key_Incre_Sequence

2 minvalue 1

3 nomaxvalue

4 start with 1

5 increase by 1

6 nocycle

7 nocache;

increase by 1

*

第 5 行出现错误:

ORA-00933: SQL 命令未正确结束

SQL> 5

5* increase by 1

SQL> c /increase/increment/

5* increment by 1

SQL> r

1 create sequence Prim_key_Incre_Sequence

2 minvalue 1

3 nomaxvalue

4 start with 1

5 increment by 1

6 nocycle

7* nocache

序列已创建。

SQL> create trigger Prim_key_trigger before

2 insert on Prim_key_Increase_Test for each row

3 begin

4 select Prim_key_Incre_Sequence.nextval into:New.id from dual;

5 end;

6 /

触发器已创建

SQL> commit;

提交完成。

SQL> insert into Prim_key_Increase_Test(id) values('181');

已创建 1 行。

SQL> select * from Prim_key_Increase_Test;

ID NAME

---------- ------------------------------

1

SQL> insert into Prim_key_Increase_Test(id) values('181');

已创建 1 行。

SQL> insert into Prim_key_Increase_Test(id) values('181');

已创建 1 行。

SQL> select * from Prim_key_Increase_Test;

ID NAME

---------- ------------------------------

1

2

3

更多信息请查看IT技术专栏

更多信息请查看数据库
手机网站地址:oracle主键的设置方法
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map