精华内容
下载资源
问答
  • oracle已有数据的表增加自增主键

    千次阅读 2019-07-28 10:00:25
    oracle已有数据的表增加自增主键: –已有数据的表增加主键,并且自增: –1、先右键表编辑,增加一个id字段,可以为空。 select * from emp; –2、id字段设置值: update emp a set a.id = rownum ; commit; ...

    oracle给已有数据的表增加自增主键:

    –给已有数据的表增加主键,并且自增:
    1、先右键表编辑,增加一个id字段,可以为空。
    select * from emp;

    2、给id字段设置值:
    update emp a set a.id = rownum ;
    commit;

    3、新建一个序列:
    select count(1) from emp; --14 总数14,那么就让序列从14开始

    create sequence student_id
    minvalue 1 --最小值
    –nomaxvalue --不设置最大值(由机器决定),或 根据表字段的值范围设置 maxvalue
    maxvalue 999999999 – 最大值
    start with 14 --从1开始计数,数值可变
    increment by 1 --每次加1,数值可变
    nocycle --一直累加,不循环;cycle:达到最大值后,将从头开始累加
    nocache; --不建缓冲区。 如果建立cache那么系统将自动读取cache值个seq,这样会加快运行速度;如果在单机中使用cache,或者oracle死了,那么下次读取的seq值将不连贯,所以不建议使用cache。

    4、执行一次序列的下一个值:
    select student_id.nextval from dual;

    –5、增加触发器,每次插入数据到该表,id都会自增。
    create or replace trigger insert_kt_resource_autoinc
    before insert on emp–表名
    for each row
    begin
    select student_id.nextval into :new.id from dual;
    end;

    –6、核查测试一下:
    select max(id) from emp;

    insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
    values (7935, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800.00, null, 20);
    
    commit;
    select max(id) from emp;
    

    –7、再右键表编辑,增加主键,且不能为空
    select * from emp;

    展开全文
  • 像使用MSSqlServer数据库创建主键字段设置自增属性,就很难找到入口。 直接开始教程: 选择要创建表的数据库,右键新建表跳转到设计页面。 在倒数第二列那个叫 键 那一列 点击勾选一下 则为此字段设置...

    Navicat15虽说功能强大,但是有好些操作还是不是很方便。像使用MSSqlServer数据库创建表是给主键字段设置自增属性,就很难找到入口。

    直接开始教程:

    • 选择要创建表的数据库,右键新建表跳转到设计表页面。

    选择要创建表的数据库,右键新建表跳转到设计表页面。

    • 在倒数第二列那个叫 键 的那一列 点击勾选一下 则为此字段设置为主键

    在这里插入图片描述

    • 勾选主键后不要急,然后点击选项跳转到另一个设置页面

    注意了,要在创建的字段的时候一起把自增设置好,创建完表后再去设置就无法设置了
    勾选主键后不要急,然后点击选项跳转到另一个设置页面

    • 选中主键字段 Id 标识种子就是起始值 标识增量就是递增数 1 就是自增+1 2就是自增+2
      注意:字段必须是int类型

    选中主键字段 Id 标识种子就是起始值 标识增量就是递增数 1 就是自增+1  2就是自增+2

    • 设置好之后保存

    设置好之后保存

    • 现在随便加俩字段然后点击 左上角 保存 Ctrl+S 也可

    现在随便加俩字段然后点击 左上角 保存  Ctrl+S 也可

    • 可以了,输入另外两个字段名,主键Id自动递增自己变

    可以了,输入另外两个字段名,主键Id自动递增自己变

                                                                                  Ppdan 2020.8.22
    
    展开全文
  • 设置主键自增 1.新建序列 递增:1 开始值:1 (如果已经存在值,truncate清空所有,否则会失效) 最小:1 2.建表,增加触发器 名:(自定义) 混合:空 每个:row 触发:before 插入:是 更新:空 删除:空 更新...

    设置主键自增
    1.新建序列
    递增:1
    开始值:1 (如果已经存在值,truncate清空所有表,否则会失效)
    最小:1
    2.建表,增加触发器
    名:(自定义)
    混合:空
    给每个:row
    触发:before
    插入:是
    更新:空
    删除:空
    更新字段:空
    启用:是
    定义:

    begin
    	select 序列名.nextval into:new.自增字段 dual;
    end;
    

    最后要加 ; 否则会出错

    oracle中
    用户是连接数据库、访问数据库的对象。
    模式是数据库对象的集合
    模式和用户一一对应,默认模式是登录用户

    展开全文
  • 在做《机房收费系统》的时候,有的表需要添加自增列,在添加新纪录时自动添加一个序号。下面我大家介绍两种添加方法: 一、通过T-SQL代码. 代码如下: alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL 这里...
  • 前言:sql server新建的表设置id为主键,自增+1,第一天用还好好的,id到自增到几十,第二天用的时候,id突然变成了一千多,这太令人郁闷了,搜索一下,发现有个老外出了答案。 SQL Server 2012 Auto ...

    前言:sql server新建的表,设置id为主键,自增+1,第一天用还好好的,id到自增到几十,第二天用的时候,id突然变成了一千多,这太令人郁闷了,搜索一下,发现有个老外给出了答案。

     
    SQL Server 2012 Auto Identity Column Value Jump Issue
     

    Introduction

    From SQL Server 2012 version, when SQL Server instance is restarted, then table's Identity value is jumped and the actual jumped value depends on identity column data type. If it is integer (int) data type, then jump value is 1000 and if big integer (bigint), then jump value is 10000. From our application point of view, this increment is not acceptable for all the business cases specially when the value shows to the client. This is the special case/issue ships with only SQL Server 2012 and older versions have no such issue.

    Background

    A few days ago, our QA Engineer claims that one of our table's identity column jumped 10000. That means the last identity value of that table was 2200 now it is 12001. In our business logic is like that the value shows to the client and it will not be accepted by the client. So we must solve the issue.

    Using the Code

    The first time, we all are surprised and confused as to how it is possible? We usually do not insert any value in identity column (insert value to identity column is possible). The identity value is maintained by SQL Server itself. One of our core team members started investigation the issue and found out the solution. Now, I want to elaborate the issue and solution that was found out by my colleague.

    How to Reproduce That?

    You need to setup SQL Server 2012 and create a test database. Then create a table with auto identity column:

    create table MyTestTable(Id int Identity(1,1), Name varchar(255));

    Now insert 2 rows there:

    insert into MyTestTable(Name) values ('Mr.Tom'); insert into MyTestTable(Name) values ('Mr.Jackson');

    You see the result:

    SELECT Id, Name FROM MyTestTable;

     

    The result is as expected. Now just restart your SQL Server service. There are various ways in which you can do it. We did it from SQL Server management studio.

     

    Now, insert another 2 rows to the same table again:

    insert into MyTestTable(Name) values ('Mr.Tom2'); insert into MyTestTable(Name) values ('Mr.Jackson2');

    Now see the result:

    SELECT Id, Name FROM MyTestTable;

     

    Now you see that after restarting the SQL Server 2012 instance, then identity value starts with 1002. It means it jumped 1000. Previously, I said that we also see if the data type of that identity column is bigint, then it will jump 10000.

    Is it really a bug?

     

    Microsoft declares it is a feature rather than a bug and in many scenarios it would be helpful. But in our case, it would not be acceptable because that number is shown to the client and the client will be surprised to see that new number after jump and the new number depends on how many times SQL Server is restarted. If it is not visible to the client, then it might be acceptable so that the number is used internally.

    Solutions

     

    If we are not interested in this so called feature, then we can do two things to stop that jump.

    • Using Sequence
    • Register -t272 to SQL Server Startup Parameter

    Using Sequence

     

    First, we need to remove Identity column from tables. Then create a sequence without cache feature and insert number from that sequence. The following is the code sample:

     

    CREATE SEQUENCE Id_Sequence AS INT START WITH 1 INCREMENT BY 1 MINVALUE 0 NO MAXVALUE NO CACHE
     
    insert into MyTestTable values(NEXT VALUE FOR Id_Sequence, 'Mr.Tom');
    insert into MyTestTable values(NEXT VALUE FOR Id_Sequence, 'Mr.Jackson');

     

    Register -t272 to SQL Server Startup Parameter

    Open SQLServer configuration manager from your server. Select SQL Server 2012 instance there right client and select Properties menu. You will find a tabbed dialog window. You select start up parameters tab from there and register -t272. Then restart SQL Server 2012 instance again and see the difference:

     

    Points of Interest

    If too many tables contain identity column to your database and all contain existing values, then it is better to go for solution 2. Because it is a very simple solution and its scope is server wise. This means if you add SQL Server 2012 parameter -t272 there, then it will affect all your databases there. If you want to create a new database and you need auto generated number field, then you can use solution 1, that means use sequence value to a column instead of auto Identity value. There are so many articles you can find online about when you will use auto identity column when using sequence and advantages/disadvantages of each other. I hope you will read all those and take the appropriate decision.

     

    解决办法:

     

    1 打开配置管理器

    2左面点击sql服务

    3右面 右键点击SQL Server(MSSQLSERVER)

    4点击 启动参数

    5 在参数 里输入  -T272 点增加

    展开全文
  • Oracle中如何新建自增列,总来说需要建立序列,并把这个序列付某一列,重建触发器即可。 第一步,打开PD,新建一个PDM文档,然后新建一个,如图所示: 第二步,创建一个序列。在【Model】-【Sequence】打开...
  • Oracle中如何新建自增列,总来说需要建立序列,并把这个序列付某一列,重建触发器即可。 第一步,打开PD,新建一个PDM文档,然后新建一个,如图所示: 第二步,创建一个序列。在【Model】-【Sequence】...
  • Oracle中如何新建自增列,总来说需要建立序列,并把这个序列付某一列,重建触发器即可。 第一步,打开PD15,新建一个PDM文档,然后新建一个,如图所示: 第二步,创建一个序列。在【Model】-...
  • 作者:小小猿爱嘻嘻最常见方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣...
  • 新建一个库的表即PhysicalDiagram  然后会选择数据库 进行建表 显示主键自增设置自增值  设置唯一性索引  1. 索引名称 2.选择索引列   3.勾选MySQL的Unique key  ...
  • 先输入一个id,id值我们一般设置为int,长度我们设为20(因人而异,也可以设其他)设置主键,点击自动递增(这样id在每次插入记录之后都会自增一个值),如下图 完成以上步骤之后,我们就可以点击添加栏位,如 ...
  • 通常我们需要避免数据库重复插入操作时候会给表设置主键或唯一索引,当插入重复数据时候抛出异常,程序终止,但是这样也会存在一定麻烦,所以就需要我们能尽量避开或忽略异常。为了演示,我们新建一个User...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略...
  • 最常见方式就是为字段设置主键或唯一索引,当插入重复...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01 ins...
  • 然后在每个,记住是每个表新建触发器(不建触发器结果是你每次插入序列号都是不连续,也就是说这个Id增长是按照序列而不是按照来增长) 2,在hibernateORM层增加注解 这个注解告诉orm,要按照序列...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into(这个可以使用下) 即插入数据时,...
  • MySQL避免重复插入数据最常见方式就是为字段设置主键或唯一...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索...
  • 最常见方式就是为字段设置主键或唯一索引,当...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01、 insert ...
  • 数据库对象

    2020-01-05 17:46:08
    序列就是新建一个虚拟的自增表在以后工作上用非常多 视图 用多个查出结果合到一个新虚拟提高安全性(必须设置可读) 索引 就是数据库增加一个目录提高查表速率 同义词 conn system/1 --登录 ...
  • 最常见方式就是为字段设置主键或唯一索引,当插入重复...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01 ins...
  • 最常见方式就是为字段设置主键或唯一索引,当...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01 insert i...
  • MySQL避免重复插入数据最常见方式就是为字段设置主键或唯一索引...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索...
  • 最常见方式就是为字段设置主键或唯一索引,当...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01 insert i...
  • MySQL避免重复插入数据最常见方式就是为字段设置主键或唯一...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索...
  • 最常见方式就是为字段设置主键或唯一索引,当...这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ...
  • 这里为了方便演示,我新建了一个user测试,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略...

空空如也

空空如也

1 2 3
收藏数 57
精华内容 22
关键字:

给新建的表设置自增