⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14.3.4 添加列到指定位置.sql

📁 sqlserver 数据库编程的绝好脚本
💻 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -