你所在位置:首页Sql资源 → 向SQL Server数据库中使用SQL Script向表添加列并指定添加列的位置

向SQL Server数据库中使用SQL Script向表添加列并指定添加列的位置

发布时间:2019-05-15

向SQL Server中使用SQL Script向表添加列并指定添加列的位置

 

使用SQL语句向数据表中添加列,我想大家都清楚该如何做,示例如下:

use test

go

alter table testadd 

add testid int not null default(1)

但是如果想将添加的列制定到某一列后呢,该如何实现呢?
 

今天我在网上查找了很久,没有很理想的实现,考虑到

SQL Server 2008有很强大脚本生成功能,于是决定

在企业管理器中给一个表手动增加一个列到指定列后,看是

怎么样生成的sql的。  www.350job.com  

操作如下:



 

下面点击生成修改的表的SQL Script,如下图:

 

 

生成的脚本如下所示:

/*

   2012年6月6日22:23:29

   用户: sa

   服务器: KEVIN

   数据库: test

   应用程序: 

*/

/* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/

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

ALTER TABLE dbo.testadd

 DROP CONSTRAINT DF__testadd__testid__03317E3D

GO

ALTER TABLE dbo.testadd

 DROP CONSTRAINT DF__testadd__testid2__0425A276

GO  www.350job.com  

CREATE TABLE dbo.Tmp_testadd

 (

 id int NOT NULL IDENTITY (1, 1),

 code nvarchar(20) NOT NULL,

 name nvarchar(50) NULL,

 remark nvarchar(200) NULL,

 createdate datetime NULL,

 createuserid nvarchar(30) NULL,

 testaddcolumn nvarchar(50) NULL,

 endamount money NULL,

 testid int NOT NULL,

 testid2 int NOT NULL

 )  ON [PRIMARY]

GO

ALTER TABLE dbo.Tmp_testadd SET (LOCK_ESCALATION = TABLE)

GO

ALTER TABLE dbo.Tmp_testadd ADD CONSTRAINT

 DF__testadd__testid__03317E3D DEFAULT ((1)) FOR testid

GO

ALTER TABLE dbo.Tmp_testadd ADD CONSTRAINT

 DF__testadd__testid2__0425A276 DEFAULT ((2)) FOR testid2

GO

SET IDENTITY_INSERT dbo.Tmp_testadd ON

GO

IF EXISTS(SELECT * FROM dbo.testadd)

  EXEC('INSERT INTO dbo.Tmp_testadd (id, code, name, remark, createdate, createuserid, endamount, testid, testid2)

  SELECT id, code, name, remark, createdate, createuserid, endamount, testid, testid2 FROM dbo.testadd WITH (HOLDLOCK TABLOCKX)')

GO

SET IDENTITY_INSERT dbo.Tmp_testadd OFF

GO

DROP TABLE dbo.testadd

GO

EXECUTE sp_rename N'dbo.Tmp_testadd', N'testadd', 'OBJECT' 

GO  www.350job.com  

ALTER TABLE dbo.testadd ADD CONSTRAINT

 PK__testadd__357D4CF87F60ED59 PRIMARY KEY CLUSTERED 

 (

 code

 ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

COMMIT

系统的方法是,先生成一个和修改后的表一样的临时表,将原来的表中的数据放到临时表中,然后原来的表删除掉,

再将临时表的名字改为原来的表的名称就可以了。
 

呵呵,原来系统是使用临时表做桥梁完成的。


 

 

作者 weizhiai12


上一篇:堆表的在执行Select语句时的默认排序问题——解决问题
下一篇:SQL语言基础(二)