求助SQL语句:增加一个字段到特定的位置!
create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
[解决办法]
SQL可以实现添加列到指定位置
- SQL code
--开启系统表写功能以便创建存储过程EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDEGOCREATE PROC sp_addColumn@TableName sysname, --要添加字段的表名@FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范@Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列, -- 如果@Position无效,则仅添加列ASIF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0BEGIN RAISERROR(N'无效的表名 "%s"',12,16,@TableName) returnEND--添加字段DECLARE @s nvarchar(4000)SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefineBEGIN 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 TRANGO--关闭系统表写功能EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE