用Oracle11g创建序列后插入数据的初始值老是从2开始

Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,

oraclesequence

 1 --创建测试表--
 2 CREATE TABLE tbl_test(
 3         test_id NUMBER PRIMARY KEY,
 4         test_name VARCHAR2(20)
 5  );
 6
 7  --为tbl_test创建序列--
 8 CREATE SEQUENCE seq_test
 9      INCREMENT BY 1 -- 每次加几个
10      START WITH 1 -- 从1开始计数
11  ;
12
13  --插入测试数据--
14  INSERT INTO tbl_test VALUES(seq_test.nextval,‘测试‘);
15  COMMIT;
16
17  --查询表中的数据
18  SELECT * FROM tbl_test;

问题原因:

·当我们使用序列作为插入数据时,如果使用了“延迟段”技术,则跳过序列的第一个值

·Oracle从 11.2.0.1版本开始,提供了一个“延迟段创建”特性:

当我们创建了新的表(table)和序列(sequence),
在插入(insert)语句时,序列会跳过第一个值(1)。
所以结果是插入的序列值从 2(序列的第二个值) 开始, 而不是 1开始。

想要解决这个问题有两种方法: 
 更改数据库的“延迟段创建”特性为false(需要有相应的权限)

1 ALTER SYSTEM SET deferred_segment_creation=FALSE;

或者 
 在创建表时让seqment立即执行,如:

1 CREATE TABLE tbl_test(
2     test_id NUMBER PRIMARY KEY,
3     test_name VARCHAR2(20)
4 )
5  SEGMENT CREATION IMMEDIATE;
时间: 2025-01-05 13:40:14

用Oracle11g创建序列后插入数据的初始值老是从2开始的相关文章

MySQL创建数据库并插入数据命令

简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 学习资源来自实验楼:https://www.shiyanlou.com/courses/9 打开MySQL 服务并使用 root 登录: # 打开 MySQL 服务 sudo service mysql start #使用 root 用户登录,密码为空 mysql -u root 以下为实例操作:创建一个名为library的数据库,包含 book.reader 两张表,根据自己的理解安排表的内容并插入数据 新

(大数据工程师学习路径)第四步 SQL基础课程----创建数据库并插入数据

一.练习内容 1.新建数据库 首先,我们创建一个数据库,给它一个名字,比如“mysql_shiyan”,以后的几次实验也是对mysql_shiyan这个数据库进行操作. 语句格式为“CREATE DATABASE <数据库名字>;”,(注意不要漏掉“;”)因此具体命令为: CREATE DATABASE mysql_shiyan; 创建成功后输入命令“show databases;”(注意不要漏掉“;”)检查一下: 在大多数系统中,SQL语句都是不区分大小写的,因此以下语句是等价的: CREA

MYSQL基础加固——创建数据库并插入数据

二.开发准备 在使用实验楼 Linux 环境进行本次实验之前,先用以下两条命令打开MySQL 服务并使用 root 登录: # 打开 MySQL 服务 sudo service mysql start #使用 root 用户登录,密码为空 mysql -u root 后续的实验都在 MySQL 的控制台输入命令进行操作. 三.实验步骤 3.1 新建数据库 首先,我们创建一个数据库,给它一个名字,比如 mysql_shiyan,以后的几次实验也是对 mysql_shiyan 这个数据库进行操作.

MySql存储过程动态创建表并插入数据

最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据. 具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天的日志写入. Mysql的可视化工具我们用的是navicat,相对来说还是比较好用,当然没有sqlserver 那么人性化(很多快捷键不支持,操作累赘).下面我就来说一说用navi

ruby(1.9.3) on rails新建项目后插入数据,时间和当前时间不符

下午16点25插入数据,显示的created time是8点15,我开始在application.rb中是这么设置的时区 config.time_zone = 'Beijing' 经过调查后修改为config.active_record.default_timezone = 'Beijing',即可显示当前时间. 据网上的说法:不加config.active_record.default_timezone = 'Beijing'显示的是utc的时间,加了之后才会转为本地时间

mysql创建表及插入数据操作步骤及注意要点

环境:mysql workbench 1.创建新的表,注意,指定要存放的数据库 列名可以加单引号(键盘上1左边的引号),也可以不加 2.插入数据 注意:如果数据是字符型,必须使用单引号或者双引号,如:"value". 原文地址:https://www.cnblogs.com/kylie-go/p/10233728.html

MySQL创建数据库并插入数据

启动MySql 启动服务:sudo service mysql start 登陆:mysql -u root 新建数据库 CREATE DATABASE <数据库名>; 在大多数SQL系统中,并不区分大小写,但是习惯上:保留字大写,变量和数据小写 连接数据库 use <数据库名> 显示:Database changed,表示连接成功 数据表 数据表是数据库的重要组成部分,是数据在数据库中具体存放的位置 新建数据表:CREATE TABLE <表名> (< 列名1&

ThinkPHP增加数据库字段后插入数据为空的解决办法

今天用ThinkPHP做了一个简单的商品发布系统,数据库本来只有四个字段id,name,url,image.id是主键,name是商品名称,url是商品链接,image是商品图片,做的差不多了,发现还少一个字段,那就是价格,然后建立了字段,类型是decimal(8,2),意思是共8位,小数点占两位,然后执行之后,页面显示数据插入成功,但是查看数据库字段为0.00,如下图: 链接纯属虚构,上不去哈,,,于是弄了好长时间,还是不行,然后怀疑是不是ThinkPHP对数字支持不是太好,然后干脆将类型修改

(二)用控制器controller给模型数据赋初始值

之前博客,非常easy的就实现了模型数据和页面显示的自己主动绑定.如今我们使用控制器,给模型赋初始值. 假设使用jquery来实现变量赋初值,须要在页面载入完毕后运行$("#target").attr("value",selfValue);使用AngularJS代码例如以下: <!doctype html> <html lang="en" ng-app> <head> <meta charset=&quo