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 @   星空28  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示