MySQL 和 Oracle 主键自增长

1、MySQL

1)建表

auto_increment:每插入一条数据,客户表(customers)的主键id就自动增1,如下所示

 1 create table customers    -- 创建客户表
 2 (
 3     id int auto_increment primary key not null,  -- auto_increment:自增长
 4     name varchar(15)
 5 );
 6

2)测试(实例)

1 insert into customers(name) values("张三"),("李四");-- 向客户表中插入数据
2
3 select * from customers; -- 查询客户表

2、Oracle

1)建表

 1 create table student
 2 (
 3   id       number not null,  -- 主键
 4   name     varchar2(20),
 5   birthday  date,  6   age     number(20),   7   phone      varchar2(60),   8   email      varchar2(10)   9 ) 10 alter table student add constraint student_pk primary key (id); -- 主键

2)创建序列

 1 /*
 2 --创建序列Sequence
 3 create sequence student_id
 4 minvalue 1  --最小值
 5 nomaxvalue  --不设置最大值(由机器决定),或 根据表字段的值范围设置 maxvalue 6 maxvalue 99999999  -- 最大值
 7 start with 1   --从1开始计数,数值可变
 8 increment by 1  --每次加1,数值可变
 9 nocycle  --一直累加,不循环
10 nocache  --不建缓冲区,如果建立cache那么系统将自动读取cache值个seq,这样会加快运行速度;如果当机或oracle死了,那么下次读取的seq值将不连贯
11 */
12 13
14 -- 创建序列
15 create sequence student_id
16 increment by 1
17 start with 1;  

3)创建触发器

格式:

  create or replace trigger 触发器名
  before insert on 表名 for each row when (new.表的自增长字段 is null)
  begin
    select 序列名.Nextval into:new.表的自增长字段 from dual;
  end;
1 -- 创建触发器
2 create or replace trigger tg_insertId
3 before insert on student for each row when (new.id is null)
4 begin
5   select student_id.Nextval into:new.id from dual;
6 end;

4)测试(实例)

1 INSERT INTO student(name,birthday,age,phone,email)
2     VALUES(‘zhangsan‘,to_date(‘2018-01-10 19:55:45‘,‘yyyy-MM-dd hh24:mi:ss‘),18,‘13510086110‘,‘[email protected]‘);  -- 插入数据34 INSERT INTO student(name,birthday,age,phone,email)
5     VALUES(‘zhangsan‘,to_date(‘2018-01-11 19:55:45‘,‘yyyy-MM-dd hh24:mi:ss‘),20,‘13510086110‘,‘[email protected]‘);6 7
8 select * from student;  -- 查询学生表


作者:DSHORE

出处:http://www.cnblogs.com/dshore123/

欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!

原文地址:https://www.cnblogs.com/dshore123/p/8267240.html

时间: 2024-11-08 03:53:39

MySQL 和 Oracle 主键自增长的相关文章

Mysql,SqlServer,Oracle主键自动增长的设置

1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如:   customers(id  auto_increment    , name (  customers(name)  id  customers; 以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值.最后查询表中id字段,查询结果为: 由此可见,一旦把id设为auto_increment类型,mys

Mysql:设置主键自动增长起始值

比较郁闷昨天在家使用‘alter table `tablename` AUTO_INCREMENT=10000;’怎么也不起效,但是今天下班时间公司一同事尝试了一下就可以了.搞不明白自己当时是怎么操作的,导致最终不起效. 实现目标:mysql下将自增主键的值,从10000开始,即实现自增主键的种子为10000. 方案1)使用alter table `tablename` AUTO_INCREMENT=10000 创建自增主键之后,使用alter table `tablename` AUTO_IN

mybatis配置oracle的主键自增长

引用自:https://hacpai.com/article/1405392025960 mysql.sqlserver等数据库本身带有主键自增长像auto_increment的功能可以直接使用 useGeneratedKeys=”true”来实现,比如下面的配置 <insert id=”add” useGeneratedKeys=”true” keyProperty=”id” parameterType=”Auth”> insert into s_user_auth (id,user_id,

oracle 主键应用序列和触发器实现自动增长

oracle 主键自动增长 这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create table simon_example ( id number(4) not null primary key, name varchar2(25) ) -- 建立序列: -- Create sequence create sequence SIMON_SEQUENCE minvalue 1 maxvalue 999999999999999999999999999 start with 1

Mybatis操作数据库实现主键自增长

(一)oracle中没有主键自增长,所有可以通过创建序列或使用触发器实现 1.先创建表 CREATE TABLE USER1 ( ID NUMBER(10), NAME VARCHAR2(20), SEX VARCHAR2(5), ADDRESS VARCHAR2(30), BIRTHDAY DATE ) 2.创建序列: CREATE SEQUENCE user1_sequence INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 10; 3.在配置文件中配制 <i

Oracle实现主键自增长

MySql中在字段定义后面使用 AUTO_INCREMENT 属性实现自增长,Oracle如何实现主键自增长? 建表: create table users(   userId number(10) not null,   username varchar2(30) not null,   birthday date default null,   sex char(1) default 1 check (sex in (0, 1)),   address varchar2(200) not n

mysql设置主键自动增长

创建数据库,创建表. Sql代码   mysql> create database ssh2; Query OK, 1 row affected (0.04 sec) mysql> use ssh2; Database changed mysql> create table user( -> id integer primary key, -> firstname varchar(200) not null, -> lastname varchar(200) not n

mysql非主键自增长

mysql并非只有主键才能自增长,而是设为键的列就可以设置自增长. 如下: 1 2 3 4 CREATE TABLE t1 (     id INT,     col1 INT auto_increment NOT NULL ); 结果如下: 如果把col1列设为键,就可以创建自增. 1 2 3 4 5 CREATE TABLE t1 (     id INT,     col1 INT auto_increment NOT NULL,     key(col1) ); 结果如下: 如果我们把i

mysql——主键自动增长&amp;唯一索引

首先说一下主键和唯一索引的区别 主键:一个数据库的一张表有且仅有一个主键,而且主键不能重复 唯一索引:一个数据库的一张表上唯一索引可以有多个,只是所在唯一索引上的值不能重复,这一点和主键一样 下面我们创建一个有主键有唯一索引的,并且主键是自动增长 create table demo (id int primary key auto_increment, name char(10) unique key, age int); 接下来我们插入数据看看 mysql--主键自动增长&唯一索引 原文地址: