【代码分享-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,如需转载请自行联系原作者







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