标题 | 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 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。