• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 校园文章 > 正文

    oracle主键的设置方法:oracle设置联合主键

    时间:2020-05-25来源:山茶花美文网 本文已影响 山茶花美文网手机站

    主键:

    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

    • oracle主键的设置方法:oracle设置联合主键 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全