时间:2021-07-01 10:21:17 帮助过:2人阅读
参考文章:Oracle之唯一性约束(UNIQUE Constraint)用法详解
唯一性约束英文是Unique Constraint,它是指表中一个字段或者多个字段联合起来能够唯一标识一条记录的约束。联合字段中,可以包含空值。
那唯一性约束与主键又有什么区别呢?
你可能会疑惑主键(Primary Key)不是唯一标识一张表的吗?
主键是所有组成主键的列都不能包含空值,而如果唯一性约束由多列组成,其中的部分列可以包含空值。同时,注意Oracle中不容许在相同列上既创建主键又创建唯一性约束。
例如学生表Student(id, stu_id, stu_name, sex, email, year),其中主键是学生学号(stu_id, year),假设该表学生每年都需要录入一遍数据,所以两个字段构成主键。
同时为了方便遍历,序号id也需要设置不同,这时候就需要id设置为唯一性。
唯一性约束可以在创建表时或使用ALTER TABLE语句创建。
创建唯一性约束的SQL语句如下:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... , column_n);删除唯一性约束的SQL语句如下:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;使用Navicat for Orcale方法如下:
前面讲述的插入序号ID,但是数据库中序号肯定会很多,如何在插入ID数据过程中更方便避免重复的插入呢?这就涉及到了设置ID为递增序列的方法。
Navicat for Orcale不像MySQL只需要勾选递增序列即可,它需要SQL语句来设置。所以这部分内容也非常重要,希望对你有所帮助。
主要步骤包括:
1) 设置序列
2) 设置对应序列和表的触发器
3) 插入数据时使用对应的触发器
具体方法如下:
第一部分 设置序列
1.通过点击"其他=》序列"可以操作序列:
2.点击进去后可以设计序列、新建序列、删除序列。
CREATE SEQUENCE User_Info_SEQ minvalue 1 maxvalue 9999999999999999999 increment by 1 start with 1;
CREATE OR REPLACE TRIGGER Trigger_User BEFORE INSERT ON T_USER_INFO for each row when(NEW.ID is NULL) begin select User_Info_Seq.Nextval into :NEW.ID from dual; end;创建成功如下图所示,注意不能缺少when(NEW.ID is NULL),因为在插入数据时会缺省ID这个值,让触发器自动补充。
insert into T_USER_INFO (USERNAME,PWD,STATUS,DW_NAME,DW_CODE) values('eastmount','000000','2','软件学院','08111003');此时能插入数据,其中字段ID会自动添加。
[数据库] Navicat for Oracle设置唯一性和递增序列实验
标签: