当前位置: 首页 > news >正文

T-SQL在SQL Server中判断表、字段、索引、视图、触发器、Synonym等是否存在

SQL Server创建或者删除表、字段、索引、视图、触发器前判断是否存在。

目录

1. SQL Server创建表之前判断表是否存在

2. SQL Server新增字段之前判断是否存在

3. SQL Server删除字段之前判断是否存在

4. SQL Server新增索引之前判断是否存在

5. SQL Server判断视图是否存在并创建

6. SQL Server判断触发器是否存在并创建

7. 创建SYNONYM 之前判断是否存在


1. SQL Server创建表之前判断表是否存在

IF OBJECT_ID('[dbo].[Documents]', 'U') IS  NULL  
begin-- This table used to save recent 2 years documentsCREATE TABLE [dbo].[Documents] ([Id]                        INT             NOT NULL,[DocumentGroupId]           INT             NOT NULL,[FileName]                  VARCHAR (200)   NULL,[FilePath]                  VARCHAR (250)   NULL,[CreateDate]                DATETIME        NOT NULL,[ModifyDate]                DATETIME        NOT NULL,[DocumentStatus]            VARCHAR (2)     NULL)END
GO

2. SQL Server新增字段之前判断是否存在

--[dbo].[AgencyDocuments] table name
--EffectiveDateTest column name. 此处不可以用[EffectiveDateTest]
if COL_LENGTH('[dbo].[AgencyDocuments]','EffectiveDateTest') is null
beginalter table [dbo].[AgencyDocuments] add [EffectiveDateTest] DATETIME NULL
end
go

3. SQL Server删除字段之前判断是否存在

--[dbo].[AgencyDocuments] table name
--EffectiveDateTest column name. 此处不可以用[EffectiveDateTest]
if COL_LENGTH('[dbo].[AgencyDocuments]','EffectiveDateTest') is NOT null
beginalter table [dbo].[AgencyDocuments] drop column [EffectiveDateTest] 
end
go

4. SQL Server新增索引之前判断是否存在

IF NOT EXISTS (SELECT top 1 1 FROM sys.indexes  WHERE name='IX_AgencyDocument_Id' AND object_id = OBJECT_ID('[dbo].[AgencyDocuments]'))
BEGIN    CREATE NONCLUSTERED INDEX IX_AgencyDocument_Id ON [dbo].[AgencyDocuments] ([Id])INCLUDE ([DocumentGroupId],[FileName],[FilePath],[CreateDate],[DocumentStatus])
END
GO

5. SQL Server判断视图是否存在并创建

-- View存在则删除
IF OBJECT_ID('vw_AgencyDocuments') IS NOT NULL
begindrop view  vw_AgencyDocuments
end
GO
--创建View
create view vw_AgencyDocuments as 
select Id from [dbo].[AgencyDocuments]
go

6. SQL Server判断触发器是否存在并创建

-- 判断是否存在,存在则删除
IF OBJECT_ID ('[dbo].[TRIGGER_INSERT_AGENCYDOCUMENTS]', 'TR') IS NOT NULL 
begindrop trigger [dbo].[TRIGGER_INSERT_AGENCYDOCUMENTS]  
end
GO-- 创新新的触发器
CREATE TRIGGER [dbo].[TRIGGER_UPDATE_AGENCYDOCUMENTS] ON [dbo].[Document] AFTER UPDATE
AS 
BEGINSET NOCOUNT ON;UPDATE mSET [ModifyDate] = n.[ModifyDate]  ,[Status] = n.[Status]      ,[DocumentStatus] = n.[DocumentStatus] FROM [dbo].[AgencyDocuments] m JOIN INSERTED n on m.Id=n.Id SET NOCOUNT OFF;
ENDGO

7. 创建SYNONYM 之前判断是否存在

if not exists (select * from sys.synonyms where object_id=OBJECT_ID('[dbo].[AgencyDocuments]'))
beginCREATE SYNONYM [dbo].[AgencyDocuments] FOR [ABC_REPL].[dbo].[AgencyDocuments]
end
go

http://www.dtcms.com/a/181543.html

相关文章:

  • MCP协议将颠覆传统数据集成
  • 2025-05-09 提示学习概念
  • QML AnimatedImage组件详解
  • 【动手学大模型开发 20】使用 Streamlit 部署大模型 RAG应用
  • C++跨平台开发实践:深入解析与常见问题处理指南
  • 西门子PLC串口转网口模块:工业通信的智能桥梁
  • 25FIC初赛(介质)
  • BUUCTF——杂项渗透之赛博朋克
  • 视频流:大华及海康视频流本地测试预览
  • 单调栈所有模版类型(4)
  • Windows11下通过Docker安装Redis
  • A2A与MCP定义下,User,Agent,api(tool)间的交互流程图
  • 工业相机的作用及未来发展
  • spring ai alibaba ChatClient 获取大模型返回内容的方式 以及使用场景
  • 多分类问题softmax传递函数+交叉熵损失
  • [特征工程]机器学习-part2
  • 物流基础知识-术语 | 医药物流(1)
  • 操作系统面试题(3)
  • 北斗导航 | RTKLib中重难点技术,公式,代码
  • RISC-V AIA SPEC学习(五)
  • NWD 格式转换 STL 全流程:专业方案与迪威模型网在线转换详解
  • Filecoin存储管理:如何停止Lotus向特定存储路径写入新扇区数据
  • 21.第二阶段x64游戏实战-分析采集物偏移
  • 工业软件自主化突围:RTOS 如何打破 “协议栈 - 控制器” 生态垄断
  • MapStruct用法实战
  • 驱动-信号量
  • C++结构体介绍
  • Go Modules 的基本使用
  • 富乐德传感技术盘古信息 | 锚定“未来工厂”新坐标,开启传感器制造行业数字化转型新征程
  • [Windows] 东芝存储诊断工具1.30.8920(20170601)