sqlserver给每张表自动添加ID索引

1、给指定数据库中的自建表添加索引ID,并设置ID自增

-- 启用动态 SQL 执行
SET NOCOUNT ON;

-- 声明变量
DECLARE @TableName NVARCHAR(255);
DECLARE @SQL NVARCHAR(MAX);

-- 获取所有用户表的游标
DECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'; -- 只处理用户表,排除系统表和视图

-- 打开游标
OPEN TableCursor;

-- 遍历每张表
FETCH NEXT FROM TableCursor INTO @TableName;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- 检查表是否已经存在名为 'ID' 的列
    IF NOT EXISTS (
        SELECT 1
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = @TableName
        AND COLUMN_NAME = 'ID'
    )
    BEGIN
        -- 动态生成 SQL 语句,添加主键自增列
        SET @SQL = 'ALTER TABLE ' + QUOTENAME(@TableName) + ' ADD ID INT IDENTITY(1,1) PRIMARY KEY;';
        
        -- 打印生成的 SQL 语句(可选)
        PRINT @SQL;

        -- 执行动态 SQL
        EXEC sp_executesql @SQL;
    END
    ELSE
    BEGIN
        -- 如果表已经有 'ID' 列,跳过
        PRINT 'table ' + @TableName + ' exist ID column, pass';
    END

    -- 继续下一张表
    FETCH NEXT FROM TableCursor INTO @TableName;
END

-- 关闭并释放游标
CLOSE TableCursor;
DEALLOCATE TableCursor;

-- 结束
SET NOCOUNT OFF;

posted @ 2025-02-20 16:32  星空28  阅读(29)  评论(0)    收藏  举报