怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
12 个解决方案
#1
直接用语句搞不定.
只能将结果插入一新表,删除原始表,然后再从新表创建回来.
select a , b = '...', c into tb2 from tb1
drop table tb1
select * into tb1 from tb2
只能将结果插入一新表,删除原始表,然后再从新表创建回来.
select a , b = '...', c into tb2 from tb1
drop table tb1
select * into tb1 from tb2
#2
你可以重新创建一个符合你要求的表啊,如果有数据可以把数据导过去的,
#3
用语句好象实现不了,不过在企业管理器中可以操作.
不过,用语句直接修改系统表是不是可以实现呢?好象以前有贴子讨论过这个问题.
不过,用语句直接修改系统表是不是可以实现呢?好象以前有贴子讨论过这个问题.
#4
一个语句搞不定,可在企业管理器中修改表,插入字段,再点生成sql语句的按钮,自动生成sql 语句
#5
SQL可以实现添加列到指定位置
--开启系统表写功能以便创建存储过程
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO
CREATE PROC sp_addColumn
@TableName sysname, --要添加字段的表名
@FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
@Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
-- 如果@Position无效,则仅添加列
AS
IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
BEGIN
RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
return
END
--添加字段
DECLARE @s nvarchar(4000)
SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefine
BEGIN TRAN
EXEC sp_executesql @s
IF @@ERROR=0
BEGIN
DECLARE @maxcolid int
SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid)
FROM syscolumns
WHERE id=OBJECT_ID(@TableName)
IF @Position>0 AND @Position<@maxcolid
UPDATE syscolumns SET
colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
WHERE id=OBJECT_ID(@TableName)
AND colid>=@Position
COMMIT TRAN
END
ELSE
ROLLBACK TRAN
GO
--关闭系统表写功能
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
#6
----测试
--开启系统表写功能以便创建存储过程
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO
create table a (a varchar(1) null,c varchar(1) null);
go
/*
a c
---- ----
(所影响的行数为 0 行)
*/
CREATE PROC sp_addColumn
@TableName sysname, --要添加字段的表名
@FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
@Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
-- 如果@Position无效,则仅添加列
AS
IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
BEGIN
RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
return
END
--添加字段
DECLARE @s nvarchar(4000)
SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefine
BEGIN TRAN
EXEC sp_executesql @s
IF @@ERROR=0
BEGIN
DECLARE @maxcolid int
SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid)
FROM syscolumns
WHERE id=OBJECT_ID(@TableName)
IF @Position>0 AND @Position<@maxcolid
UPDATE syscolumns SET
colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
WHERE id=OBJECT_ID(@TableName)
AND colid>=@Position
COMMIT TRAN
END
ELSE
ROLLBACK TRAN
GO
---增加新列到2
exec sp_addColumn 'a','b int',2
select * from a
/*
a b c
---- ----------- ----
(所影响的行数为 0 行)
*/
--关闭系统表写功能
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
go
drop table a
drop proc sp_addColumn
#7
在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。
可任意调整
可任意调整
#8
在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。
可任意调整
---------------------------
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
可任意调整
---------------------------
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
#9
借问楼上各位高人,这样做的意义是什么,什么场合下需要?
#10
回楼上,现在是在回复楼主提的问题,如果想知道为什么,建议问楼主,嘿嘿
#11
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!?
-----------
在SQL2005的环境下,在企业管理里有修改,选择生成SQL脚本,就行了。。。
生成脚本也就是用一个事务,用新表得到旧表数据,重命名表。。。
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!?
-----------
在SQL2005的环境下,在企业管理里有修改,选择生成SQL脚本,就行了。。。
生成脚本也就是用一个事务,用新表得到旧表数据,重命名表。。。
#12
哦来哦来
#1
直接用语句搞不定.
只能将结果插入一新表,删除原始表,然后再从新表创建回来.
select a , b = '...', c into tb2 from tb1
drop table tb1
select * into tb1 from tb2
只能将结果插入一新表,删除原始表,然后再从新表创建回来.
select a , b = '...', c into tb2 from tb1
drop table tb1
select * into tb1 from tb2
#2
你可以重新创建一个符合你要求的表啊,如果有数据可以把数据导过去的,
#3
用语句好象实现不了,不过在企业管理器中可以操作.
不过,用语句直接修改系统表是不是可以实现呢?好象以前有贴子讨论过这个问题.
不过,用语句直接修改系统表是不是可以实现呢?好象以前有贴子讨论过这个问题.
#4
一个语句搞不定,可在企业管理器中修改表,插入字段,再点生成sql语句的按钮,自动生成sql 语句
#5
SQL可以实现添加列到指定位置
--开启系统表写功能以便创建存储过程
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO
CREATE PROC sp_addColumn
@TableName sysname, --要添加字段的表名
@FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
@Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
-- 如果@Position无效,则仅添加列
AS
IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
BEGIN
RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
return
END
--添加字段
DECLARE @s nvarchar(4000)
SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefine
BEGIN TRAN
EXEC sp_executesql @s
IF @@ERROR=0
BEGIN
DECLARE @maxcolid int
SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid)
FROM syscolumns
WHERE id=OBJECT_ID(@TableName)
IF @Position>0 AND @Position<@maxcolid
UPDATE syscolumns SET
colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
WHERE id=OBJECT_ID(@TableName)
AND colid>=@Position
COMMIT TRAN
END
ELSE
ROLLBACK TRAN
GO
--关闭系统表写功能
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
#6
----测试
--开启系统表写功能以便创建存储过程
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO
create table a (a varchar(1) null,c varchar(1) null);
go
/*
a c
---- ----
(所影响的行数为 0 行)
*/
CREATE PROC sp_addColumn
@TableName sysname, --要添加字段的表名
@FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
@Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
-- 如果@Position无效,则仅添加列
AS
IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
BEGIN
RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
return
END
--添加字段
DECLARE @s nvarchar(4000)
SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefine
BEGIN TRAN
EXEC sp_executesql @s
IF @@ERROR=0
BEGIN
DECLARE @maxcolid int
SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid)
FROM syscolumns
WHERE id=OBJECT_ID(@TableName)
IF @Position>0 AND @Position<@maxcolid
UPDATE syscolumns SET
colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
WHERE id=OBJECT_ID(@TableName)
AND colid>=@Position
COMMIT TRAN
END
ELSE
ROLLBACK TRAN
GO
---增加新列到2
exec sp_addColumn 'a','b int',2
select * from a
/*
a b c
---- ----------- ----
(所影响的行数为 0 行)
*/
--关闭系统表写功能
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
go
drop table a
drop proc sp_addColumn
#7
在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。
可任意调整
可任意调整
#8
在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。
可任意调整
---------------------------
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
可任意调整
---------------------------
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
#9
借问楼上各位高人,这样做的意义是什么,什么场合下需要?
#10
回楼上,现在是在回复楼主提的问题,如果想知道为什么,建议问楼主,嘿嘿
#11
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!?
-----------
在SQL2005的环境下,在企业管理里有修改,选择生成SQL脚本,就行了。。。
生成脚本也就是用一个事务,用新表得到旧表数据,重命名表。。。
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!?
-----------
在SQL2005的环境下,在企业管理里有修改,选择生成SQL脚本,就行了。。。
生成脚本也就是用一个事务,用新表得到旧表数据,重命名表。。。
#12
哦来哦来