`

oracle 实现自增auto_increament

阅读更多

在mysql中,实现字段自增,只用给他设置为auto_increase就ok了

 

这是简单的傻子啊(但是多数据库共享,分布式计算就不适用了,呵呵)

 

在oracle中没有这样便捷的功能,所以只能用sequence加trigger来解决这个问题

 

以下是一个Demo:

    创建sequence

-- create sequence of id of the table sql_template_set 
create sequence sql_template_id_seq
increment by 1
start with 60
nomaxvalue
nominvalue
nocache;

 

    创建表 sql_template_set (id为主键,并且为自增字段)

    create table SQL_TEMPLATE_SET

(
  SENTENCE    VARCHAR2(2000),
  TEMPLATESQL VARCHAR2(300),
  TABLEIDS    VARCHAR2(100),
  ID          NUMBER(6) not null
)
alter table SQL_TEMPLATE_SET
  add constraint TEMPLATE_ID primary key (ID)

 

    创建触发器,在insert数据之前,添加id的值

    -- 创建自增触发器

create or replace trigger sql_template_con_tri
before insert on sql_template_set for each row
begin
       -- 设置sql主键自增
      select sql_template_id_seq.nextval into :new.id from dual;
end;

 

    完毕,现在可以测试一下下

     -- 测试表trigger

insert into sql_template_set(sentence,templatesql,tableids) values('dirktest','dirktest','dirktest') 
commit;
 

    结果主键id就从60开始,每加条数据递增1

 

分享到:
评论

相关推荐

    mysql中自增auto_increment功能的相关设置及问题

    要修改这些设置,可以使用`SET`语句,比如`SET auto_increment_increment=10`将自增步长设置为10,而`SET auto_increment_offset=2`将初始值设定为2。请注意,如果`auto_increment_offset`的值大于`auto_increment_...

    MySQL中不能创建自增字段的解决方法

    sql_mode,并且在sql的my.ini文件中的sql-mode 默认增加了其中的二种,一个是STRICT_TRANS_TABLES,就是导致auto_increament失败的mode,这个sql_mode主要用于 当一个值不能插入到表中是,则产生一个错误而不是一个警告并...

    mysql自增ID起始值修改方法

    在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始值修改与设置方法。通常的设置自增字段的方法:创建表格时添加: 代码如下:create table ...

    GST-Billing-App

    GST帐单应用程式 在此应用中,可以添加新产品,可以在产品... $create table tb_products (ID INT NOT NULL AUTO_INCREAMENT, name varchar(30), price int, gst int, PRIMARY KEY(ID)); 克隆Git存储库。 $ git clo

    用eclipse搭建SSH架构(struts + spring + hibernate)

    同时,需要检查生成的 *.hbm.xml 文件,如果主键是 auto_increament, 则 *.hbm.xml 文件里的主键产生方式需要设置为 identity。 2. 搭建 Struts 环境 在搭建 Struts 环境时,需要复制 struts*.tld 到工程的 WEB-...

    算术表达式的求值(栈的运用)课程设计

    通过上述知识点的介绍,我们了解了如何使用栈来实现算术表达式的求值过程。这包括了栈的基本操作、初始化、压入和弹出等关键步骤。这些知识点不仅适用于算术表达式的求值,也是理解更高级算法的基础。在实际编程中,...

    数据结构-栈的基本操作-代码.docx

    - 当栈满时(`top` 达到 `stacksize - 1`),使用 `realloc` 增加栈的容量,增加的量为 `STACK_INCREAMENT` 乘以当前元素大小。 - 入栈操作将元素 `e` 存储在栈顶,并将 `top` 自增 1。 3. **取栈顶元素(Gettop...

    数据结构实验报告5.docx

    5. **宏定义**:`#define STACK_INCREAMENT 10`和`#define STACK_INI_SIZE 100`是宏定义,用于设置栈的初始大小和增长量。这些常量使得代码更具可读性和可维护性。 6. **数据结构的结构体表示**:实验报告中定义了`...

    关于laravel 数据库迁移中integer类型是无法指定长度的问题

    laravel数据库迁移中integer类型是无法指定长度的,很多小伙伴对integer类型...查看了sql代码后发现通过integer指定长度创建的子段自动添加了auto increament 以及 primary key 属性 int not null auto_increment prim

    Increament-Number-In-React

    Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误...

    13.56MHz_14443串口通讯协议1

    在实际应用中,开发者需要根据这些指令来编写与13.56MHz模块通信的软件,实现读卡、写卡、认证等操作。同时,理解串口协议指令的格式对于确保数据传输的正确性至关重要。通过设置适当的波特率、校验和机制,可以有效...

    Java多线程 之 临界区、ThreadLocal.docx

    在Java中,我们可以通过两种方式来实现临界区: - **使用`synchronized`关键字**:将需要保护的代码块包围在`synchronized`块内,同步块的锁对象是`syncObject`。只有获取到锁的线程才能进入同步块执行代码。例如...

    java必学必会之this关键字

    在构造函数中,可以通过`this()`调用其他构造函数,实现代码复用。此外,`this`也可以用于初始化匿名内部类的成员,或者在静态上下文中引用非静态成员(尽管不推荐,因为静态成员属于类,而非实例)。 总的来说,`...

    C++中的模板template小结

    有时候,我们可能希望为特定的数据类型提供不同的实现。这时,我们可以使用模板特化。例如,对于`mycontainer`类模板,我们可能想要在处理`char`类型时有特别的行为: ```cpp template class mycontainer<char> { ...

    Javascript编码规范

    needIncreament && ( variable += increament ); if ( num > list.length ) {} while ( len-- ) {} ``` - **单行声明数组与对象的空格**:单行声明的数组与对象,如果包含元素,`{}`和`[]`内紧贴括号部分不...

    react-redux-tutorial:ReactJS教程(Redux计数器项目)

    学习这个教程,你不仅会掌握React和Redux的基础知识,还会了解到如何组织代码以实现更好的状态管理。这将帮助你构建更大、更复杂的React应用,并理解如何使用Redux来管理状态,使应用保持清晰和可维护。此外,你还将...

    JavaScript编码规范

    needIncreament && (variable += increament); if (num > list.length) { } while (len--) { } ``` **[强制]** 单行声明的数组与对象,如果包含元素,`{}` 和 `[]` 内紧贴括号部分不允许包含空格。 - **示例*...

Global site tag (gtag.js) - Google Analytics