建表,主键自增

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 (‘赵七’,‘女’);

sqlserver主键自增相关推荐

  1. SQLSERVER数据库设置varchar类型主键自增方法

    .NET自带生成主键的方法:Guid生成方法,Guid.NewGuid(); SqlServer数据库中: select NEWID() 生成32位长度的字符串主键,在数据库中设置主键自增的方法如下图

  2. SQLServer数据库设置主键和主键自增

    在想要设置主键的那一行,右击就会出现如下图所示的页面,点击设置主键 如何设置主键自增 在设计表的页面的下方,有一个标识规范,(是标识),后面点击是,默认是否,就可以了

  3. mybatis 实现oracle主键自增的机制

    本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的 在mysql中 [sql ...

  4. oracle 创建表定义主键,Oracle 学习----:创建表(主键自增)

    一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary ...

  5. 【Qt】使用sqlite3数据库时,主键自增和获取自增后的主键的

    创建数据表格,设置主键自增 创建数据库时,启用主键自增加特性 Create table testTable (id INTEGER PRIMARY KEY AUTOINCREMENT,.... 注意事 ...

  6. postgre 没有主键自增ma_PostgreSQL 主键自增解决方案

    因为工作需要,接触到了PostgreSQL,遇到了主键自增的情况 8.1.4. Serial Types 数据类型serial和bigserial不是真正的类型,而只是用于设置唯一标识符列的符号方便( ...

  7. 用tirgger实现主键自增(trigger+sequence)

    用tirgger实现主键自增: create table book (bid number(4) primary key, bname varchar2(20) ) create sequence b ...

  8. insert into select 主键自增_springboot2结合mybatis拦截器实现主键自动生成

    点击上方蓝字关注我们 1 01 前言 前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键.于是我就问他,那你们数据库表设置主键自动递增不就得了.他的回答是他 ...

  9. 数据库 MySQL 如何设置表的主键自增起始值

    文章目录 表已有数据,truncate 之后再设置 auto_increment,可行 表已有数据,delete from 之后再设置 auto_increment,可行 主键自增起始值重置 查询表名 ...

最新文章

  1. 扔掉源码,15张图带你彻底理解java AQS
  2. 你知道我今天为什么来公司上班吗?
  3. unity发布webgl 触摸控制和鼠标控制冲突问题解决
  4. 设计模式 -- (7)外观模式
  5. 设计模式7----代理模式
  6. Nulgrind:最小的Valgrind工具
  7. Does Oracle Goldengate support Parallel DML?
  8. PTA是什么?BT-WIFI共存 转帖
  9. 26. 面向对象程序设计
  10. Java中对象的直接赋值、浅拷贝及深拷贝的理解和应用场景及其实现方式
  11. windows10上Eclipse运行MapReduce wordcount程序遇到的坑
  12. react-native修改android包名-上传应用市场
  13. 傲梅分区助手克隆Linux硬盘,傲梅分区助手复制磁盘或克隆磁盘到另外磁盘
  14. 论mybatisPlus 连表插件(MPJBaseMapper) 与自定义SQL注入器冲突
  15. linux 脚本 pause,Linux Shell脚本pause命令
  16. Ant Design 省市区联动数据
  17. 按钮英文字母大小写-默认样式修改-vuetify
  18. (三十六)Delta中性对冲与Delta-Gamma中性对冲
  19. 技术实验—使用selenium打开百度搜索关键字
  20. 求一百个人中有人生日相同的概率

热门文章

  1. Go语言---面向对象编程
  2. Linux---信号及其使用简单讲解
  3. Vue中引入swiper插件报错:To install it, you can run: npm install --save swiper/css/swiper.css
  4. 面试必知的25个经典回答 ,最全的面试干货,没有之一
  5. JavaScript学习 第四课(四)
  6. 北京时间的拼音及解释
  7. 真正好的东西,就会脱颖而出
  8. 除非万不得已,否则绝不谈判
  9. 赚钱的一大障碍:知道的赚钱门路太多
  10. 其实在直播平台买东西的客户最愚蠢