【代码分享-SQL】为DB中所有Table增加PK

简介:

辛辛苦苦将数据导入到DB中,却发现忘记创建脚本中忘记PK了。

 

好在Table都有规律,每个表有个[ID] int字段,PK是建立在其上的。

 

注:

1)为了代码的可读性,没有采用‘SQL拼接’方法,而是采用了‘先占位,后替换’的方法--看里面的Replace语句。推荐给大家

2)由于是执行DDL,出于谨慎考虑,‘生成’而非‘直接执行’SQL。若不然,读者可以将里面的EXEC语句去掉注释。

----这是代码---------------------------------------

 

 
 
  1. SET ANSI_NULLS ON 
  2. GO 
  3. SET QUOTED_IDENTIFIER ON 
  4. GO 
  5.  
  6. -- ============================================= 
  7. -- Author:      Yew 
  8. -- Create date: 2011-06-12 
  9. -- Description: 为所有表增加PK (on ID) 
  10.  
  11. /* ---------History---------------------------- 
  12.  
  13. ---------------------------------------------*/ 
  14. -- ============================================= 
  15. CREATE PROCEDURE [TOOL].[sp_DB_AddPK] 
  16. AS 
  17. BEGIN 
  18.     SET NOCOUNT ON
  19.  
  20.     DECLARE @vTable varchar(100) 
  21.         ,@vSchema varchar(100) 
  22.         ,@vSql  varchar(max
  23.  
  24.     DECLARE cur_ CURSOR FOR 
  25.         SELECT [name], schema_name(schema_id) 
  26.         FROM sys.objects 
  27.         WHERE type in (N'U'
  28.         ORDER BY schema_id, name 
  29.  
  30.     OPEN cur_ 
  31.     FETCH NEXT FROM cur_        INTO @vTable, @vSchema 
  32.     WHILE @@FETCH_STATUS = 0 
  33.     BEGIN 
  34.         SET @vSQL = N' 
  35. ALTER TABLE [#Schema#].[#Table#] ADD  CONSTRAINT [PK_#Table#] PRIMARY KEY CLUSTERED  
  36.     [ID] ASC 
  37. )WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = ON, ONLINE = OFFON [PRIMARY
  38. GO 
  39.  
  40.         SET @vSQL = Replace(@vSQL, '#Table#', @vTable) 
  41.         SET @vSQL = Replace(@vSQL, '#Schema#', @vSchema) 
  42. print @vSql 
  43. --      EXEC (@vSql) 
  44.  
  45.         FETCH NEXT FROM cur_ INTO @vTable, @vSchema 
  46.     END 
  47.     CLOSE cur_ 
  48.     DEALLOCATE cur_ 
  49. END 

 

----这是代码--------------------------------------------


















本文转自DavyYew 51CTO博客,原文链接:http://blog.51cto.com/davyyew/586877,如需转载请自行联系原作者







相关文章
|
1月前
|
SQL 数据库
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
34 2
|
1月前
|
SQL 关系型数据库 MySQL
创建SQL数据库的基本步骤与代码指南
在信息时代,数据管理显得尤为重要,其中数据库系统已成为信息技术架构的关键部分。而当我们谈论数据库系统时,SQL(结构化查询语言)无疑是其中最核心的工具之一。本文将详细介绍如何使用SQL创建数据库,包括编写相应的代码和必要的步骤。由于篇幅限制,本文可能无法达到您要求的2000字长度,但会尽量涵盖创建数
53 3
|
1月前
|
SQL 数据库
LangChain-08 Query SQL DB 通过GPT自动查询SQL
LangChain-08 Query SQL DB 通过GPT自动查询SQL
17 3
|
1月前
|
SQL 监控 关系型数据库
SQL错误代码1303解析与处理方法
在SQL编程和数据库管理中,遇到错误代码是常有的事,其中错误代码1303在不同数据库系统中可能代表不同的含义
|
1月前
|
SQL 安全 关系型数据库
SQL错误代码1303解析与解决方案:深入理解并应对权限问题
在数据库管理和开发过程中,遇到错误代码是常见的事情,每个错误代码都代表着一种特定的问题
|
3月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
42 1
|
2月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
127 0
|
3月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
118 0
|
3月前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
56 0
|
3月前
|
SQL Java 数据库连接
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available

热门文章

最新文章

下一篇
无影云桌面