Oracle中实现自动增长列

oracle

--在users表的userid列上实现自动增长列
--需要同时使用序列和行级触发器

create sequence seq_userid;   --创建序列

create or replace trigger users_bir  --创建行级触发器
before insert on users
for each row
declare
  tempnum number;
begin
  select seq_userid.nextval into tempnum from dual;
  :new userid := 'Usr' || lpda(tempnum,7,'0');
end users_bir ;

时间: 2024-09-13 00:16:29

Oracle中实现自动增长列的相关文章

SQL jdbc解决自动自动增长列统一处理问题纪实

sql|解决|问题 sql server2005 jdbc解决自动自动增长列统一处理问题纪实 作者fbysssmsn:jameslastchina@hotmail.com  blog:blog.csdn.net/fbysss声明:本文由fbysss原创,转载请注明出处 关键字:自动增长列,jdbc,sqlserver2005 背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式问题1:insert+select方案sqlserver2000可以使用insertSql  +

java web-求解:为什么不能读取自动增长列的值,在修改过程中传值?

问题描述 求解:为什么不能读取自动增长列的值,在修改过程中传值? 解决方案 你的4后面有个空格,所以没法转换成数字 解决方案二: 异常显示是空格的问题.你可以检查下数据库中存的值是不是有空格,然后再检查下数据展示的代码是不是有空格. 如果数据库没有问题,就可能是这个值在页面是可编辑的,所以会接收到了误操作的空格.

深入Mysql,SqlServer,Oracle主键自动增长的设置详解_Mysql

1.把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: 复制代码 代码如下: create table customers(id int auto_increment primary key not null, name varchar(15));insert into customers(name) values("name1"),("name2");select id fr

SQL Server 2012 自动增长列,值跳跃问题

原文:SQL Server 2012 自动增长列,值跳跃问题   介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中

sql server2005 jdbc解决自动增长列统一处理问题纪实

背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式 问题1:insert+select方案 sqlserver2000可以使用insertSql + SELECT @@IDENTITY AS 'Identity'的方式来获得,但是mysql则只能使用executeUpdate(insertSql); executeQuery('SELECT last_insert_id() ')这样的方式,否则会抛出异常:java.sql.SQLException: Can not is

在oracle中查询xml表列内容显示不全,为什么???

问题描述 在oracle中查询xml表列内容显示不全,为什么??? 建立了一个包含xml列的表,也成功插入了xml项,但是用查询语句显示不全xml的内容,不知道为啥?? CREATE TABLE employees( eid int primary key, einfo xmltype ); insert into employees values(1,XMLType(bfilename('XMLDIR', 'einfoTest.xml'),nls_charset_id('GB2312') ))

【Mysql 学习】自动增长列

--对于innodb表,自动增长列必须是索引.如果是组合索引,也必须是前导列. mysql> create table innodb_auto     -> ( id1 int not null auto_increment,     -> id2 int not null,     -> val varchar(10),     -> index(id2,id1)     -> ) engine=innodb; ERROR 1075 (42000): Incorrec

Oracle数据库自动增长列的实现过程

◆1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache 20 order; ◆2.--INNERID.currval 指当前序列 --INNERID.nextval 指下一个序列 insert into admin values (INNERID.nextval,'a'); insert into admin va

SQLite中重置自动编号列的方法_SQLite

目前流行的数据库都提供了自动编号类型,SQLite也不例外.当数据库中包含自动编号的字段时,SQLite会自动建立一个名为 sqlite_sequence 的表.这个表包含两个字段:name 和 seq .name字段记录了自动编号字段所在的表,seq字段记录了当前用到的序号(下一条记录的编号就是当前序号加1). 在开发过程中,我们经常要把表重置.也就是说把表中的记录全部清空,并把自动编号归0.在SQLite中,只需要修改 sqlite_sequence 表就可以了: 复制代码 代码如下: UP