`

SQL Server 2008为已有的列添加自增IDENTITY

 
阅读更多
SqlServer 2008
1.检查函数是否存在
2.为已有的列添加自增IDENTITY(1,1)
use xxx
go
--检查函数是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getAllPid]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getAllPid]
go

CREATE FUNCTION getAllPid(@SID varchar(200))
RETURNS @t_Level TABLE(SID varchar(200),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @SID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.parentsid,@Level
FROM SYS_UNIT a,@t_Level b
WHERE a.sid=b.sid
AND b.Level=@Level-1
END
RETURN
END
GO
--为已有的列添加自增IDENTITY(1,1)
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.GLQ_INTEGRATEDINFO1 (
[ID] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[MODELNAME] [bigint] NULL,
[CREATEDATE] [datetime] NULL,
[DONE] [bigint] NULL,
[DEAL] [bigint] NULL
)

GO
SET IDENTITY_INSERT dbo.GLQ_INTEGRATEDINFO1 ON
GO
IF EXISTS(SELECT * FROM dbo.GLQ_INTEGRATEDINFO)
EXEC('INSERT INTO dbo.GLQ_INTEGRATEDINFO1 (id,modelname,createdate,done,deal)
SELECT id,modelname,createdate,done,deal FROM dbo.GLQ_INTEGRATEDINFO WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.GLQ_INTEGRATEDINFO1 OFF
GO
DROP TABLE dbo.GLQ_INTEGRATEDINFO
GO
EXECUTE sp_rename N'dbo.GLQ_INTEGRATEDINFO1', N'GLQ_INTEGRATEDINFO', 'OBJECT'
GO
COMMIT

 

分享到:
评论

相关推荐

    SQL Server 2008怎样添加自增列实现自增序号

    在SQL Server 2008中,为表添加自增列是常见的数据库设计需求,尤其在需要记录数据插入顺序或创建唯一标识时。自增列(IDENTITY列)会在每条新记录插入时自动递增,提供了一个方便的方式来跟踪记录。以下是两种在SQL...

    SQL Server 打开或关闭自增长

    在数据导入过程中,这通常是非常有用的,比如当你从其他源导入已带有自增列值的数据,或者你需要保持与原有系统一致的序列号时。但是,需要注意的是,频繁地打开和关闭自增长可能导致数据一致性的问题,因此在完成...

    sqlserver自动增长字段设置方法.rar

    在SQL Server数据库管理系统中,自动增长(Identity)字段是一个非常重要的特性,主要用于为表中的记录生成唯一的标识符,通常作为主键使用。本教程将详细解释如何在SQL Server中设置和管理自动增长字段。 首先,...

    SQL SERVER 自增列

    这个查询首先检查`sysobjects`中的对象类型为用户表('U'),然后通过`syscolumns`视图进一步确认是否有自增列,`columnproperty()`函数在这里用于确定字段是否为自增。 如果你需要获取自增列的相关信息,例如表名...

    Log Explorer for SQL Server v4.22 含注册机

    否则SQLServer将已循环的方式来覆盖先前的日志记录,将会导致LogExplore无法恢复错误. 数据恢复介绍 LogExplore允许你恢复应为误操作或者程序错误而导致的数据丢失或者更改.比如执行update\Delete语句时丢失了where...

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

    3. **将已有列设置为主键并自动增长**: 假设你的表已经有了`id`字段,但未被设置为主键或自动增长,你可以这样操作: ```sql ALTER TABLE tb ALTER COLUMN id INT NOT NULL; ALTER TABLE tb ADD CONSTRAINT ...

    Log Explorer for SQL Server v4.22

    否则SQLServer将已循环的方式来覆盖先前的日志记录,将会导致LogExplore无法恢复错误. 数据恢复介绍 LogExplore允许你恢复应为误操作或者程序错误而导致的数据丢失或者更改.比如执行update\Delete语句时丢失了...

    SQLserver知识点大全总结(全)

    * 自增列(Identity):自动递增的列,通常用于主键。 插入数据 * 单行插入:使用 `INSERT INTO` 语句插入单行数据。 * 多行插入:使用 `INSERT INTO` 语句插入多行数据。 * 批量插入:使用 `BULK INSERT` 语句...

    SQL Server 2000程序设计

    4. **表的修改**:使用`ALTER TABLE`语句可以对已存在的表进行修改,包括添加新列、删除列或更改列的数据类型和约束。例如,可以添加一个“入学总分”列,删除“专业名”列,或者将“学号”字段从`int`类型改为`char...

    解决sqlserver 2012 重启服务ID自动增长1000的问题

    SQL Server中的自增ID通常由`IDENTITY`属性定义的列来实现,它确保每次插入新行时,该列的值都会递增。当数据库服务重启时,如果数据库处于非正常关闭状态,系统可能无法正确记住上次分配的ID。为避免重复值,SQL ...

    SQL Server中identity(自增)的用法详解

    在SQL Server中,`identity` 是一种特殊的数据类型属性,用于创建自动递增的字段,通常用在主键上,确保每条记录都有一个唯一的标识符。以下是对`identity`属性的详细解释: ### 一、`identity`的基本用法 1. **...

    SQL 在自增列插入指定数据的操作方法

    在SQL中,自增列(IDENTITY列)是一种特殊的列类型,它会在每次插入新行时自动递增其值,通常用于创建唯一的主键。在默认情况下,自增列不允许直接插入用户指定的值,因为它会自动管理这些值。然而,在某些特定场景...

    SQL Server 2012降级至2008R2的方法

    1. **导出数据库对象架构**:使用SQL Server Management Studio (SSMS),通过右键点击数据库,选择“任务” -> “生成脚本”,然后在高级选项中设定为2008 R2版本生成全库脚本,包括索引、触发器等。这一步是为了在...

    SQL SERVER 数据库 小总结

    删除一个已有的表可以使用 `DROP TABLE` 命令。例如,删除前面创建的 `xuesheng` 表,可以执行如下命令: ```sql DROP TABLE xuesheng; ``` #### 修改表 (Alter Table) 修改表结构可以通过 `ALTER TABLE` 命令实现...

    mysql,oracle,sqlserver分页

    id INT NOT NULL IDENTITY(1, 2) PRIMARY KEY, -- 设置为主键和自增长列,起始值为1,每次自增2 name VARCHAR(50) NOT NULL, sex VARCHAR(10) NOT NULL, age INT NOT NULL ); END INSERT INTO Users(name, ...

    《SQL-Server数据库技术》试卷D.docx

    20. 使用IDENTITY属性可以创建自增列,插入新行时系统会自动为其分配值。 三、填空题涉及知识点: 21. 局部变量以@开头,全局变量以@@开头。 22. ASCII函数返回字符的ASCII码,CHAR函数返回指定的ASCII码对应的...

    SQL2005代码创建数据库、表、添加约束、添加权限

    ### SQL Server 2005 创建数据库与表的详细解析 #### 创建数据库 在SQL Server 2005中创建数据库是一项基础而重要的任务。在给出的代码片段中,可以看到以下步骤: 1. **检查数据库是否存在**:首先通过`IF ...

    SQL Server笔试题解答

    - **修改表结构**:使用`ALTER TABLE`语句修改已有的表结构,如添加、删除列。 - **插入数据**:使用`INSERT INTO`语句向表中添加新的记录。 - **更新数据**:使用`UPDATE`语句修改表中现有记录的值。 - **删除...

    hMailServer创建表sql及各字段意思

    根据提供的文档信息,本文将对创建`hMailServer`中的`hm_accounts`表的SQL语句及其各个字段的含义进行详细解析。 ### 创建`hm_accounts`表的SQL语句 首先,我们来看一下用于创建`hm_accounts`表的SQL语句: ```sql...

Global site tag (gtag.js) - Google Analytics