sql自增长设置与删除的深入分析

identity(1,1)是指每插入一条语句时这个字段的值增1,
语法
IDENTITY   [   (   seed   ,   increment   )   ]
参数
seed
装载到表中的第一个行所使用的值(标示种子)。
increment
增量值,该值被添加到前一个已装载的行的标识值上(标示增量)。
必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值   (1,1)。
例如:
create table WorkRoom
(WorkRoomID int not null identity(1,1) primary key,
WorkRoomName Varchar(50) null,
TeacherName Varchar(10) null,
WorkRoomManager Varchar(10) null,
WorkRoomPlan Varchar(max) null,
Purl Varchar(50) null,
Remarks Varchar(max) null,
)
修改s创建标示和删除标示:
ALTER TABLE TABLENAME DROP COLUMN ID
ALTER TABLE TABLENAME ADD ID int identity(1,1) not null
 
如何用sql语句去掉列的自增长(identity)
========================================
如何用sql语句去掉列的自增长(identity),取消标识命令:
**无法通过alter把现有自增字段改为非自增
比如alter table a alter id int,自增属性不会去掉
通过修改系统表可以做到(此法可能有不可预知的结果,慎之...)
sp_configure 'allow updates', 1
GO
reconfigure with override
GO
update syscolumns set colstat = colstat & 0x0000
where id=o b j e c t_id('表名') and name='字段名'
GO
sp_configure 'allow updates', 0
---------------------------------
--折中的办法
alter table a add xxx int
update a set xxx=id
alter table a drop column id
exec sp_rename 'xxx', 'id', 'column'
========================================
第一个方法是可以去掉,但以后可能会导致出问题,建议用第二个方法,我用的语句现在也贴出来,也许需要的朋友有些用处
删除表 zx_user 中字段 userid 的自增长属性方法:
//新建临时字段
alter table zx_user add useridtmp int null
//赋值
update zx_user set useridtmp =userid
//删除主键
alter table zx_user drop pk_zx_user
//删除字段
alter table zx_user drop column userid
//增加字段
alter table zx_user add userid int null
//把值还原回来
update zx_user set userid = useridtmp
//删除临时字段
alter table zx_user drop column useridtmp
//修改新建字段不为空
alter table zx_user alter column userid int not null
//健主键,多个字段做主键,用逗号隔开,比如primary key (userid,xxxxxx)
alter table zx_user add primary key (userid)
========================================
删除主键时候,不知道你主键名字,请用一下方法查询:
select * from syso b j e c ts where xtype='PK

(0)

相关推荐

  • mysql修改自增长主键int类型为char类型示例

    原来有一个表中的主键是int自增长类型, 因为业务变化需要把int改成char类型的主键.同时因为原来的表中已经存在了数据,不能删除表重建,只能修改表结构. 首先去掉自增长属性: alter table table_name  change indexid indexid int; 然后去掉主键: ALTER TABLE table_name   DROP   primary key; 修改表结构为char类型: alter table table_name change indexid ind

  • SQL Server 打开或关闭自增长

    在往数据库表中添加一行的时候,要针对自增列插入一个特定值的时候,这个函数就很有用了,比如表结构如: id |  text 1  |    a 2  |    b 4  |   d 其中id列是自曾列,如果我们要插入3  |  c的话,如果没有打开自增列,肯定是插不进去的,这时候用这个函数就有作用了 复制代码 代码如下: SET IDENTITY_INSERT [Recursive] ON   INSERT INTO [Recursive](id,text) VALUES(3,'c')   SET

  • MySQL rownumber SQL生成自增长序号使用介绍

    下面介绍几种具体的实现方法. 建立实验环境如下mysql> create table tbl (    ->  id      int primary key,    ->  col     int    -> );Query OK, 0 rows affected (0.08 sec) mysql> insert into tbl values    -> (1,26),    -> (2,46),    -> (3,35),    -> (4,68

  • sql分类汇总及Select的自增长脚本

    如图: 其中Num是自增长列,Operation是分类标签,count是汇总数据 脚本如下: 复制代码 代码如下: select Num=row_number() OVER(order BY HT_Resv.OperationStatus),HT_Resv.OperationStatus , CASE HT_Resv.OperationStatus WHEN '3' THEN '成功' WHEN '4' THEN '失败' end as 'Status',count(HT_Resv.Id) as

  • 解析SQL 表结构信息查询 含主外键、自增长

    最近项目需要做什么数据字典,需要表结构信息.在网上看了许多关于表结构信息的查询,感觉都不怎么样.相对好一点就是<基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)> ,但是这里有一点小问题,缺少一个过滤以致运行有一点小bug.在AdventureWorks2012数据库中的Address表查询结果如图:在查询过滤中我们添加以下信息就ok了:AND g.class_desc = 'OBJECT_OR_COLUMN'修改后的SQL如下: 复制代码 代码如下: SELECT

  • SQL Server设置主键自增长列(使用sql语句实现)

    1.新建一数据表,里面有字段id,将id设为为主键 复制代码 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 复制代码 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create

  • sql自增长设置与删除的深入分析

    identity(1,1)是指每插入一条语句时这个字段的值增1, 语法 IDENTITY   [   (   seed   ,   increment   )   ] 参数 seed 装载到表中的第一个行所使用的值(标示种子). increment 增量值,该值被添加到前一个已装载的行的标识值上(标示增量). 必须同时指定种子和增量,或者二者都不指定.如果二者都未指定,则取默认值   (1,1).例如:create table WorkRoom(WorkRoomID int not null i

  • SQL Server数据库设置自动备份策略的完整步骤

    先了解一下:为何要做备份? 数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程.传统的数据备份主要是采用内置或外置的磁带机进行冷备份.但是这种方式只能防止操作失误等人为故障,而且其恢复时间也很长.随着技术的不断发展,数据的海量增加,不少的企业开始采用网络备份.网络备份一般通过专业的数据存储管理软件结合相应的硬件和存储设备来实现. 一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,

  • Attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性

    Attrib 显示.设置或删除指派给文件或目录的只读.存档.系统以及隐藏属性.如果在不含参数的情况下使用,则 attrib 会显示当前目录中所有文件的属性. 语法 attrib [{+r|-r}] [{+a|-a}] [{+s|-s}] [{+h|-h}] [[Drive:][Path] FileName] [/s[/d]] 参数 +r  设置只读属性.  -r  清除只读属性.  +a  设置存档文件属性.  -a  清除存档文件属性.  +s  设置系统属性.  -s  清除系统属性.  +

  • 浅谈python类属性的访问、设置和删除方法

    类属性和对象属性 我们把定义在类中的属性称为类属性,该类的所有对象共享类属性,类属性具有继承性,可以为类动态地添加类属性. 对象在创建完成后还可以为它添加额外的属性,我们把这部分属性称为对象属性,对象属性仅属于该对象,不具有继承性. 类属性和对象属性都会被包含在dir()中,而vars()是仅包含对象属性.vars()跟__dict__是等同的. 类属性和对象属性可类比于Java中的static成员和非static成员,只不python中的类属性和对象属性都是可以动态添加(和删除)的. clas

  • Windows下SQL Serever 2012彻底卸载删除教程

    在安装了SQL Server2012之后,当由于某些原因我们需要卸载它时,我们应该怎么操作呢?相信这个问题困扰着不少人,博主经过亲身实践之后,给大家提供这样一种方法. 第一步.在控制面板里面找到程序--卸载程序这一项 打开之后就会是这样的了 第二步.找到Microsoft SQLserver 2012 (64-bit) 经过第一步打开卸载程序后,在里面找到Microsoft SQLserver 2012 (64-bit)这一项,可以通过右上角搜索框寻找,楼主就是通过右上角搜索寻找的. 第三步.右

  • Mybatis中resultMap标签和sql标签的设置方式

    目录 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 4.User类 5.IUserDao接口 6.MybatisTest 7.运行结果 resultMap标签的使用规则 自定义结果映射规则 association联合查询 使用association进行分布查询 collection分步查询 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 1.SqlMapConfig.xml文件 <?xml

  • SQL Server如何设置用户只能访问特定数据库和访问特定表或视图

    目录 前言 1.设置用户只能查看数据库中特定的视图或表 2.设置用户只能看到特定的数据库 总结 前言 在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我们选择test库 新建查询: 对用户qqq分配 View_1视图 只有 只读select权限

  • SQL Server 2000/2005/2008删除或压缩数据库日志的方法

    由 于数据库日志增长被设置为"无限制",所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除. 网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法.这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志的不同之处,颇有帮助.同

  • sql自动增长标识导致导入数据问题的解决方法

    对于一个设了自动增长标识的数据表来说,它的字段的值是由数据库自动设置的:这在导数据时很麻烦. 当我们导数据时,我们往往想想将标识字段的数据也导进来,怎么办呢? 方法有两种: 1.用数据库管理工具在界面将表的自动增长标识去除,导完数据,再在界面里改回来.(这种方法麻烦,且要动数据表设置中,不推荐) 2.用SET IDENTITY_INSERT OFF和SET IDENTITY_INSERT ON(推荐这种方法) SET IDENTITY_INSERT [ database_name . [ sch

  • sql server 关于设置null的一些建议

    我们设计表时,在字段是否允许Null值这个问题上,有时会争论一番. 数据库牛人Kalen Delaney则给了一下建议: 1,永远不要在用户表中允许NULL值 2,在用户表定义中包含一个NOT NULL限制 3,不要依赖数据库属性来控制NULL值的行为 对于第一点,我们反向说,如果允许NULL,会给我们带来什么影响. 1,SQL 在每条记录中都设置了一个特殊的bitmap来显示哪些允许空值的列上存储的真的是空值.如果是NULL,在访问每一行的时候SQL Server都必须对这个bitmap进行解

随机推荐