orcale实现自增列

手动创建了一个表格,但是id字段无法实现自增,查看了一下网上的信息,没有找到满意的答案。一下是自己总结摸索的,仅供参考

第一步:手动创建表和列中的字段 (本例中,表明 T_VIDEO,第一个字段:ID)

第二步:创建sequence,如图

第三步:创建触发器,如图

触发器的代码如下

create or replace trigger tri_video before insert
on T_video for each row
declare
    integrity_error  exception;
    errno            integer;
    errmsg           char(200);
    dummy            integer;
    found            boolean;

begin
    select SQ_T_Video.NEXTVAL INTO :new.ID from dual;

--  Errors handling
exception
    when integrity_error then
       raise_application_error(errno, errmsg);
end;

复制上面代码,(1)更改 触发器的名字(本例中是tri_video,可以随意命名)(2)更改 表明(本例中是:T_video),改成你想影响的表明(3)改序列的名字(本例中是,SQ_T_video)(4)更改 要当主键的字段(本例中是 ID ,在New.ID中的id)

然后编译触发器即可。

仅供参考,如果有疑问,请留言

orcale实现自增列

时间: 2024-10-07 07:52:37

orcale实现自增列的相关文章

orcale设置自增列

create sequence SEQ_ERRORID minvalue 1 maxvalue 99999999 start with 1000 increment by 1 nocache order; create or replace trigger tri_ERRORINFO_ERRORID --触发器名称 before insert on REPORT_ERRORINFO_PDF --Test是表名 for each row declare nextid number; begin I

mysql中InnoDB表为什么要建议用自增列做主键

InnoDB引擎表的特点 1.InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的; (2)不可能在非叶子结点命中; (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 2.如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引.如果没有显式定义主键,则InnoDB会选择第一个不包含有NU

程矢Oracle PowerDesigner中生成Oracle版本主键和自增列

Oracle中如何新建自增列,总的来说需要建立序列,并把这个序列付给某一列,重建触发器即可. 第一步,打开PD,新建一个PDM文档,然后新建一个表,如图所示: 第二步,创建一个序列.在[Model]-[Sequence]打开序列列表窗口,新建一个序列.然后打开序列的属性设置项[physical Options],进行如下设置,点击确定,序列建立完毕. 第三步,将刚刚创建的序列应用到表的主键列中,如图所示:点击确定, 点击确定,至此,自动创建了一个触发器,把序列的值添加到主键中.

Hibernate自增列保存失败的问题

author: hiu 最近由ibatis转用Hibernate,期间遇到了一系列的问题,今天又遇到了个问题,是因为自增列的问题导致保存时报错,现在记录下来,以便日后忘记时查看 这个问题其实是使用myEclipse生成表的实体类时,自增列的注解错误导致的. 问题原因:利用myEclipse的Hibernate Reverse Engineening生成的实体类自增列注解设置了在主键keyjobno上,而不是对应的 id 列上 解决办法 :将自增列注解设置在对应的 自增列id上 数据库employ

innodb 自增列重复值问题

1 innodb 自增列出现重复值的问题 先从问题入手,重现下这个bug use test; drop table t1; create table t1(id int auto_increment, a int, primary key (id)) engine=innodb; insert into t1 values (1,2);insert into t1 values (null,2); insert into t1 values (null,2); select * from t1;

开发人员改主键自增列起始值多了个0 !!!

2017-07-23 晚21:21接到开发打来的电话说mysql自增列改大后还能修改吗? 原由:因领导说要保留id 99999和 98888这样的id号 自己用,然后开发就自己改了user_login_account表自增列起始值,开发本想改成100002,然而他多加了一个0,搞成了1000002,这就有点杯具了, 于是开发想试图搞这个值改小成100002,结果改不回来了,他就找到我处理.本想 1 首先和开发沟通后确定影响到了2张表,一个表是user_login_account的自增id列,另一

orcle创建自增列

刚刚用orcle,组长让我设计一张表,结果设计完了以后就在PLSQL设计主键ID,因为如果不用自增列的话就得用复合主键,所以就想着用ID的自增列来表示.可是他和SQL Server又有点不太一样,他没又自增列.所以在网上查了一下,两种方法. 方法1:触发器 首先先创建一张测试表t_demo create table t_demo ( id number(20) primary key, username varchar2(20) ) 第一步:创建squence create sequence d

SQL Server 强行Insert包含自增列值的记录

SET IDENTITY_INSERT 表 ON INSERT INTO 表 ([ID] ,[SequenceNumber] ,[EnumCode] ,[Description]) VALUES (6 ,1 ,'Empty' ,'Empty') SET IDENTITY_INSERT 表 OFF 此处ID为自增列 SQL Server 强行Insert包含自增列值的记录,布布扣,bubuko.com

SQLite清空表并将自增列归零[转]

SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容.但SQLite不支持这个语句.在SQLite中直接使用“DELETE FROM TableName”就可以了.对于大多数DBMS来说,用DELETE不如用TRUNCATE 速度快,因为TRUNCATE 不用访问整个表,不用记录数据的变动. SQLite虽然不支持TRUNCATE,但它对DELETE做了优化:“When the WHERE is omitted(略去) from a DELETE statement and th