精华内容
下载资源
问答
  • SqlServer主键自增的sql语句 ** 由于Navicat不支持sqlserver的主键自增设置,自己安装失败一次SqlServer后注册表傻傻的删不干净,连安装三次SqlServer都失败了…想要建表只能在Navicat上使用sql语句… ** == alter ...

    SqlServer主键自增的sql语句

    alter table 表名 add 主键字段名 int identity(1,1) primary key(主键字段名)

    以上就OK啦!
    ----------------------分割线 2020/12/17------------------------------------------
    建表的时候 可以直接在Navicat上设置主键自增 误导了大家这么久…
    1.建主键id
    在这里插入图片描述
    2.选择右侧 选项功能
    标识字段 填自己写好的主键id
    标识种子 可以设置从几开始 一般从 1
    标识增量 可以设置增量 一般设置1
    在这里插入图片描述
    这样 就可以直接在Navicat上配置 sqlserver的主键自增了

    展开全文
  • tk.mybatis sqlserver主键自增数据插入失败: Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘mu_kit’ 中的标识列插入显式值。 解决方法: 加@column...

    错误信息:
    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘mu_kit’ 中的标识列插入显式值。

    解决方法:

    1. 加@column设置insertable=false也可以使用普通的insert方法。

    eg.

        @Id
        @Column(insertable = false,name = "id")
        @GeneratedValue(generator = "JDBC")
        private Integer id;
    
    1. 用sqlserver专用的insert语句,下面的insertTest方法即把id去掉
     <resultMap id="BaseResultMap" type="com.xiaobu.entity.MuKit">
        <!--@mbg.generated generated on Fri Oct 25 14:18:00 CST 2019.-->
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
        <result column="delivery_number" jdbcType="VARCHAR" property="deliveryNumber" />
        <result column="mu_number" jdbcType="VARCHAR" property="muNumber" />
        <result column="mu_sn" jdbcType="VARCHAR" property="muSn" />
        <result column="production_order" jdbcType="VARCHAR" property="productionOrder" />
        <result column="running_hours" jdbcType="VARCHAR" property="runningHours" />
      </resultMap>
      <!--suppress SqlResolve -->
        <sql id="Base_Column_List">
        <!--@mbg.generated generated on Fri Oct 25 14:18:00 CST 2019.-->
        create_time, delivery_number, mu_number, mu_sn, production_order, running_hours
      </sql>
    
        <!--suppress n -->
        <sql id="base_properties_list">
                #{createTime,jdbcType=TIMESTAMP},#{deliveryNumber,jdbcType=VARCHAR}, #{muNumber,jdbcType=VARCHAR},#{muSn,jdbcType=VARCHAR},#{productionOrder,jdbcType=VARCHAR},#{runningHours,jdbcType=VARCHAR}
        </sql>
    
    
        <insert id="insertTest" parameterType="com.xiaobu.entity.MuKit" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
            INSERT INTO mu_kit (<include refid="Base_Column_List"/>)
            values (<include refid="base_properties_list"/>)
        </insert>
    
    

    insertSelective对应的sql语句加入了NULL校验,即只会插入数据不为null的字段值。
    insert则会插入所有字段,会插入null。

    展开全文
  • SqlServer主键自增及插入操作问题

    千次阅读 2020-11-07 23:56:03
    定义主键自增 更改标识规范改为是,就完成了主键自增的设置 插入操作 对于此表 insert into Person(id,tname,age) values (#{id},#{tname},#{... Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENT

    定义主键自增

    在这里插入图片描述
    更改标识规范改为,就完成了主键自增的设置

    插入操作

    Person
    对于此表

    insert into Person(id,tname,age) values (#{id},#{tname},#{age})
    
    //报错
    org.apache.ibatis.exceptions.PersistenceException: 
    ### Error updating database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Person' 中的标识列插入显式值。
    ### The error may exist in cn/mapper/PersonMapper.xml
    ### The error may involve cn.mapper.PersonMapper.InsertPerson-Inline
    ### The error occurred while setting parameters
    ### SQL: /*set IDENTITY_INSERT Person ON*/         insert into Person(id,tname,age) values (?,?,?)         /*set IDENTITY_INSERT Person OFF*/
    ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Person' 中的标识列插入显式值。
    
    //或者
    org.apache.ibatis.exceptions.PersistenceException: 
    ### Error updating database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 不能将值 NULL 插入列 'id',表 'tan.dbo.Person';列不允许有 Null 值。INSERT 失败。
    ### The error may exist in cn/mapper/PersonMapper.xml
    ### The error may involve cn.mapper.PersonMapper.InsertPerson-Inline
    ### The error occurred while setting parameters
    ### SQL: set IDENTITY_INSERT Person ON         insert into Person(id,tname,age) values (?,?,?)         set IDENTITY_INSERT Person OFF
    ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 不能将值 NULL 插入列 'id',表 'tan.dbo.Person';列不允许有 Null 值。INSERT 失败。
    

    正确的自增插入语句

    insert into Person(tname,age) values (#{tname},#{age})
    

    不需要自增字段

    关于插入返回id值的配置

    <!--
    xml方式
    	useGeneratedKeys="true"		开启自动返回主键id
    	keyProperty="id"			实体属性名称
    	keyColumn="id"				数据库表字段名称
    -->
    <insert id="InsertPerson" parameterType="Person" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
    
    <--注解方式-->
    @Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id")
    

    id值就返回到实例中

    展开全文
  • sqlserver主键自增

    万次阅读 2019-03-14 15:04:10
    create table aaa( id bigint identity(1,1) not null PRIMARY key, name nvarchar(255) ); navicat没办法给主键列,加identity,只能用sql建表

    建表,主键自增

    create table aaa(
    id bigint identity(1,1) not null PRIMARY key,
    name nvarchar(255)
    );
    

    navicat没办法给主键列,加identity,只能用sql建表

    赋值时,identity列不能赋值,报错
    在这里插入图片描述

    一、identity的基本用法

    1.含义
    identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错

    2.语法
    列名 数据类型 约束 identity(m,n)

    m表示的是初始值,n表示的是每次自动增加的值

    如果m和n的值都没有指定,默认为(1,1)

    要么同时指定m和n的值,要么m和n都不指定,不能只写其中一个值,不然会出错

    3.实例演示
    不指定m和n的值

    create table student1
    (
    sid int primary key identity,
    sname nchar(8) not null,
    ssex nchar(1)
    )
    insert into student1(sname,ssex) values (‘张三’,‘男’);
    insert into student1 values (‘李四’,‘女’);–可以省略列名
    insert into student1 values (‘王五’,‘女’);

    指定m和n的值

    create table student2
    (
    sid int primary key identity(20,5),
    sname nchar(8) not null,
    ssex nchar(1)
    )
    insert into student2(sname,ssex) values (‘张三’,‘男’);
    insert into student2 values (‘李四’,‘女’);–可以省略列名
    insert into student2 values (‘王五’,‘女’);

    4.删除一条记录接着插入
    把sid为2的记录删除,继续插入,新插入的记录的sid不是2,而是3

    create table student3
    (
    sid int primary key identity,
    sname nchar(8) not null,
    ssex nchar(1)
    )
    insert into student3(sname,ssex) values (‘张三’,‘男’);
    insert into student3 values (‘李四’,‘女’);
    delete from student3 where sid=2;–把sid为2的记录删除
    insert into student3 values (‘王五’,‘女’);

    二、重新设置identity的值

    1.语法
    dbcc checkident(表名,reseed,n);

    n+1表示的是表中identity字段的初始值(n的值可以为0)

    也就是说:如果插入的是id为2的记录,则n的值是1

    2.实例演示
    create table student4
    (
    sid int primary key identity,
    sname nchar(8) not null,
    ssex nchar(1)
    )
    insert into student4(sname,ssex) values (‘张三’,‘男’);
    insert into student4 values (‘李四’,‘女’);
    delete from student4 where sid=2;–把sid为2的记录删除
    dbcc checkident(‘student4’,reseed,1);–把student4表中identity字段的初始值重新设置为1
    insert into student4 values (‘王五’,‘女’);

    三、向identity字段插入数据

    1.语法
    set identity_insert 表名 on;
    insert into 表名(列名1,列名2,列名3,列名4) values (数据1,数据2,数据3,数据4);
    set identity_insert 表名 off;

    注意:插入数据时必须得指定identity修饰的字段的名字

    2.实例演示
    create table student5
    (
    sid int primary key identity(20,5),
    sname nchar(8) not null,
    ssex nchar(1)
    )
    insert into student5(sname,ssex) values (‘张三’,‘男’);
    insert into student5 values (‘李四’,‘女’);
    insert into student5 values (‘王五’,‘女’);
    set identity_insert student5 on;
    /*
    insert into student5 values (‘黑六’,‘男’);–error
    insert into student5 values (21,‘黑六’,‘男’);–error
    /
    insert into student5(sid,sname,ssex) values (21,‘黑六’,‘男’);
    set identity_insert student5 off;
    /

    insert into student5 values (22,‘赵七’,‘女’);–error
    insert into student5(sid,sname,ssex) values (22,‘赵七’,‘女’);–error
    */
    insert into student5 values (‘赵七’,‘女’);

    展开全文
  • 今天使用INSERT into table(A,B,C) VALUES(?,?,?)总是报错主键不能为空,试了一下...SqlServer仅可在创建表的时候设置主键自增,另一种是删除某一个字段,然后再添加此字段设置字段自增,不过这个需要原表没有数据。 ...
  • 1.报错如下,插入数据时,报主键不满足约束,重复ID。  怀疑自增长ID 有问题,百度一下,可以查询和修改自增长ID的值。  //取最新自动增长值 select ident_current('表名')  然后使用 DBCC CHECKIDENT ('...
  • 由于Navicat不支持sqlserver主键自增设置,需要自己写sql设置: alter table 表名 add 主键字段名 int identity(1,1) primary key(主键字段名);
  • sql-server sql语句主键自增

    千次阅读 2007-05-10 08:57:00
    identity(seed,numIncrement) --创建测试表 CREATE TABLE t1(ID int IDENTITY,A int) GO --插入记录 INSERT t1 VALUES(1) GO --1. 将IDENTITY(标识)列变为普通列 ALTER TA
  • SQL Server 2008 主键自增

    千次阅读 2014-02-19 10:58:01
    Sql 主键自增 环境:SQL Server 2008 问题:设置主键和把它设为自增。    环境:SQL Server 2008  问题:设置主键和把它设为自增。  解决:点击table->选中表->design->选中需要设置主键的字段,单击右键...
  • SQLServer数据库设置主键和主键自增

    万次阅读 2019-06-21 07:36:34
    在想要设置主键的那一行,右击就会出现如下图所示的页面,点击设置主键 如何设置主键自增 在设计表的页面的下方,有一个标识规范,(是标识),后面点击是,默认是否,就可以了 ...
  • SQL server-自增主键

    2017-12-13 09:43:00
    1.CREATE TABLE 表名( 字段名 [int] IDENTITY (1, 1) NOT NULL , //--(seed=1,increment=1)從1開始,...2.在SQL SERVER中,所有整数类型的列都可以定义成自增长列,叫作“标识”, 它通过设定“标识种子”和“标识...
  • sqlServer2008自增主键

    2019-01-10 09:17:06
  • DBCC CHECKIDENT (要改的表名,RESEED,从几开始)
  • sqlserver设置为主键自增后我们往数据库中插入数据,按道理来说不应该写主键 eg: 插入语句写成: insert into t_student(name,age) values('kaoyan',85); 应该就可以,但是一直报错 很有意思的问题:你既要说主键...
  • sql 主键自增

    2013-04-08 19:28:22
    在mysql中,直接把表的主键设为auto_increment类型,在MS SQLServer中,如果把表的主键设为identity类型, 在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给...
  • alter table tname add id int identity(1,1) 转载于:https://www.cnblogs.com/shamo89/p/9149017.html
  • sql server中表id设置为自增后,不能通过insert语句插入值为null的id 解决办法 在entity中用@Column把id字段从insert操作中过滤掉: @Column(insertable = false, name = “id”) public class UserEntity { @Id @...
  • sql主键自增的表插入数据 1、建立索引 -- Create sequence  create sequence SEQ_NEW_OLD_MGE minvalue 1400 maxvalue 999999999999999999999999999 start with 1420 increment by 1 cache 20; ...
  • 1、原理实现 ...在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。 create table customers(id int identity(1,1) primary key not null, name varchar(15)); insert into
  • Sql 主键自增

    2012-08-07 11:12:00
    环境:SQL Server 2008 问题:设置主键和把它设为自增。  环境:SQL Server 2008 ... 若要设置主键自增,在列属性中找到标识规范,单击左边的"+"号,把否改为是,其他默认即可。 ...
  • 使用DBCC CHECKIDENT可以重新设置在使用中的表的标识列的起始值; 如在删除表中的所有记录,需要让标识列从1开始时可以在查询分析器中执行:DBCC CHECKIDENT(TableName,RESEED,0);该语句的...
  • 使用Navicat 在Sql Server数据库创建表,找不到主键自增的设定。 这个时候插入数据,控制台会报错: > SQL Error: 515, SQLState: 23000 不能将值 NULL 插入列 'id',表 > 'xxxxx.dbo.xxx_xxxxxx_xx';列不...
  • SQLSERVER自增主键

    万次阅读 2010-02-24 22:13:00
    SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入。1. SQLServer 自增主键创建语法:identity(seed, increment)其中seed 起始值increment 增量示例:create table student( id int ...
  • SQLServer自增(identity)用法

    千次阅读 2019-11-28 17:46:53
    SQLServer自增(identity)用法 一、含义   identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错。 二、语法 列名 数据类型 约束 identity...
  • sqlserver修改主键id自增

    千次阅读 2020-05-12 14:11:04
    SQLServer不能通过Navicat等界面工具修改主键的自动增长,修改操作只能通过sql命令来实现。 自增列不能直接修改,必须将原有ID列删除,然后重新添加一列具有identity属性的ID字段。比如你要修改的字段名为ID: alter...
  • http://blog.csdn.net/zh2qiang/article/details/5323981  SQLServer 中含自增主键的表,... SQLServer 自增主键创建语法:identity(seed, increment)其中seed 起始值increment 增量示例:create table student( ...
  • 问题原因:数据库迁移后误操作导致表自增主键序号与数据库数据不一致,过小或过大,过大没有问题,过小导致数据插入失败,需要重新定制启始值,语句如下: 指定新的标识值:DBCC CHECKIDENT('table_name', RESEED, ...
  • 背景:当我们使用SQL Server 进行数据库操作时,经常会把 Table 的 ID 设置成主键自增 PRIMARY KEY IDENTITY,但是这样做存在一个问题就是 当我们删除一行数据后,再次添加后会看到ID的顺序不连续,如下所示。...
  • CREATE TABLE PerformanceInfo ( id int identity(1,1) primary key, staffNum INT UNIQUE NOT NULL, name varchar(20) NOT NULL, post varchar(10), joinDate datetime, GW varchar(10), KH varchar(10), ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,135
精华内容 8,454
关键字:

sqlserver主键自增语句