在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功能相信每位phper都用过,本文就为大家分享一下mysql字段自增功能的具体查看及设置方法
因为innodb的auto_increament的计数器记录的当前值是保存在存内存中的,并不是存在于磁盘上,当mysql server处于运行的时候,这个计数值只会随着insert改增长,不会随着delete而减少。而当mysql server启动时,当...
sql_mode,并且在sql的my.ini文件中的sql-mode 默认增加了其中的二种,一个是STRICT_TRANS_TABLES,就是导致auto_increament失败的mode,这个sql_mode主要用于 当一个值不能插入到表中是,则产生一个错误而不是一个警告并...
在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始值修改与设置方法。通常的设置自增字段的方法:创建表格时添加: 代码如下:create table ...
GST帐单应用程式 在此应用中,可以添加新产品,可以在产品... $create table tb_products (ID INT NOT NULL AUTO_INCREAMENT, name varchar(30), price int, gst int, PRIMARY KEY(ID)); 克隆Git存储库。 $ git clo
laravel数据库迁移中integer类型是无法指定长度的,很多小伙伴对integer类型...查看了sql代码后发现通过integer指定长度创建的子段自动添加了auto increament 以及 primary key 属性 int not null auto_increment prim
Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误...