Oracle
1、建用户数据表
drop table dectuser;
create table dectuser(
userid integer primary key, /*主键,自动增加*/
name varchar2(20),
sex varchar2(2)
);
2、创建自动增长序列
drop sequence dectuser_tb_seq;
create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999
increment by 1
start with 1; /*步长为1*/
a.查询序列的下一次,每查询一次,都会引起序列当前的变化
select dectuser_tb_seq.nextval from dual
b.查询序列的当前值,不会引起序列当前值的变化
select dectuser_tb_seq.currval from dual
3、创建触发器
create or replace trigger dectuser_tb_tri
before insert on dectuser /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
for each row /*对每一行都检测是否触发*/
begin /*触发器开始*/
select dectuser_tb_seq.nextval into :new.userid from dual; /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
end;
/*退出sqlplus行编辑*/
4、提交
commit;
现在就完成了自增主键的设定,搞定!可以检测一下。
insert into dectuser(name,sex) values ('wang','女');
****************************************************************************************************
总的来说,通过在insert操作之前,添加一个触发器,将序列的值放到了将要插入的数据的ID中。
所以,需要 建表->建序列->建触发器 这样一个过程。
我觉得有几个要注意的
一是主键类型为 INT型比较好。
二是触发器主题内容中,select...into 后面的冒号不能掉了。
转载:
http://blog.csdn.net/wangzwhu/archive/2008/10/29/3173918.aspx
Mysql:
比如有个表:
CREATE TABLE `person` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=123456 DEFAULT CHARSET=gbk
这里就建立了一个person表,id 字段自动增加,每次增加1,从123456开始,注意表一定要有主键
分享到:
相关推荐
本教程将详细解释如何在SQL Server中设置和管理自动增长字段。 首先,我们需要理解自动增长字段的基本概念。在SQL Server中,每个表都可以有一个或多个自动增长字段,它们的值会随着新记录的插入而自动递增。这个...
### Hibernate自动增长字段详解 #### 一、概述 在数据库设计与开发过程中,主键的自动生成是一项重要的功能。Hibernate框架提供了多种灵活的方式来实现主键的自动增长,从而简化了开发人员的工作。本文将详细介绍...
自增长字段(AutoNumber或Counter数据类型)是一种特殊的字段类型,当向表中添加新记录时,该字段会自动递增一个数值。通常用于为主键生成唯一的ID编号。例如,在订单系统中,每新增一条订单记录时,订单ID就会自动...
本文将详细介绍如何不使用`MAX(id)+1`的方式获取自动增长字段的下一个编号。 ### SQL 获取自动增长字段的下一个编号 #### 一、理解自动增长字段 在数据库设计中,自动增长字段是一种特殊类型的字段,通常用于作为...
在数据库设计中,自增字段(自动增长字段)是非常常见的一种需求。它主要用于为主键提供唯一且连续递增的标识符,便于记录数据条目的唯一性。不同的数据库系统支持不同的自增字段创建方式。本文将详细介绍几种主流...
首先,我们需要理解自动增长字段的含义。在SQL中,`AUTO_INCREMENT`(在MySQL中)或`IDENTITY`(在SQL Server中)关键字用于创建一个整数字段,该字段的值在每次插入新记录时会自动递增。这对于主键字段尤其有用,因为...
### SQL Server中实现字段值自动增长且连续的关键知识点 #### 引言 在数据库管理中,确保特定字段的值能够自动增长且保持连续性对于数据的有序性和完整性至关重要。SQL Server提供了多种方法来实现这一需求,包括...
在Oracle数据库中,并没有像MySQL那样的自动增长字段特性,因此在实际应用中,我们常常需要手动实现这一功能。序列(Sequence)是Oracle提供的一种用于生成一系列唯一数值的对象,非常适合用来作为表中的主键值。 #...
在Oracle数据库系统中,与...通过理解序列的工作原理和使用方法,你可以更有效地管理Oracle数据库中的自动增长字段。在实际应用中,根据具体场景选择合适的序列设置和使用策略,可以优化数据库性能并确保数据的一致性。
在数据库管理中,自增长字段是一种常见的需求,尤其是在设计主键或唯一标识符时。DB2作为一种强大的关系型数据库管理系统,提供了多种方法来实现字段的自增长功能。本文将详细介绍如何在DB2中通过触发器及`GENERATED...
综上所述,“Failed to read auto-increment value from storage engine”这一错误通常是由于自动增长字段的数据类型不足以容纳更多的数据所导致的。通过调整数据类型、清理重复数据以及实施预防措施,可以有效避免...
在MyBatis中,获取插入记录的自增长字段值是一个常见的问题,特别是在使用自动增长字段的数据库管理系统中。下面,我们将详细介绍MyBatis获取插入记录的自增长字段值的方法。 首先,我们需要在MyBatis的Mapper文件...
在MySQL数据库中,自动增长字段是一种非常有用的特性,尤其是在需要为主键分配唯一标识符的情况下。通过设置一个列的`AUTO_INCREMENT`属性,每当向表中插入新记录时,该列的值会自动递增。这种方式极大地简化了数据...
例如,在创建用户信息表 Userinfo 时,我们可以将 User_ID 字段设置为 auto_increment,以便在插入数据时自动增长: ```sql CREATE TABLE UserInfo ( User_ID int NOT NULL PRIMARY KEY AUTO_INCREMENT, Name ...
当设置`strategy=GenerationType.IDENTITY`时,实体的主键将由数据库自动生成,这通常适用于支持自动增长字段的数据库,如HSQL、SQL Server、MySQL、DB2和Derby等。这种方式简洁高效,但需要数据库级别的支持。 第...
`TRUNCATE TABLE`命令不仅能够快速地清空表数据,而且还会重置表的自动增长字段的计数器。 #### 3. 恢复所有表约束的SQL 在禁用了表中的所有约束后,可能需要重新启用它们。这可以通过执行以下SQL语句来完成: ``...
在数据库管理中,经常需要某些字段的值可以自动增长且连续,以保证数据的唯一性和顺序性。本文将介绍在SQL Server数据库中实现字段值自动增长且连续的两种方法,并详细阐述各自的实现方式、优缺点及适用场景。 首先...
在插入数据时,自增长字段可由空值 '' 或 null 代替,如果 insert 语句中列出了所插入的字段,如 insert into list(name) values('aaa'), 则增长字段不用写。 Oracle 字段自增长机制可以简化开发者的工作,提高开发...