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

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.xdnf.cn/news/5076.html

相关文章:

  • 详解 c++17 重载类 overload的每一条语句,附实例.
  • Dify之八添加各种在线大模型
  • P1020 [NOIP 1999 提高组] 导弹拦截
  • Java——多态
  • 热力图是什么?三分钟学会热力图数据分析怎么做!
  • Dify MCP实战 - 邮件发送
  • 【动态导通电阻】p-GaN HEMTs正向和反向导通下的动态导通电阻
  • MySQL数据库故障排查与解决方案
  • VMware中ubuntu虚拟机基本配置
  • 时间有变!Sui Overflow 2025 最新安排
  • Auto DOP:让并行执行实现智能调优 | OceanBase 实践
  • Python实例题:Python快速获取斗图表情
  • 电机试验平台:实现性能评估与优化的关键工具
  • groovy @CompileStatic注解小记
  • 常见图像融合算法(图像泊松融合)
  • Qt开发经验 --- 避坑指南(9)
  • CST仿真喇叭/波导相位中心
  • 面对渠道竞争,品牌该如何应对?
  • Base64 编码原理详细解析
  • OpenManus中使用命令行运行py脚本报错
  • NoMachine 将虚拟显示器改为物理显示器
  • 树初步 #1(插排串联 - 辽宁省2024CCPC)
  • 【C】初阶数据结构15 -- 计数排序与稳定性分析
  • 报表控件stimulsoft教程:使用 JoinType 关系参数创建仪表盘
  • 番茄爽文小说,叙事技巧情感设计有哪些?
  • 实现线程的4种方法
  • 深入理解主从数据库架构与主从复制
  • AD 排针类元件模型的创建
  • 影刀RPA开发-智能录制
  • MySQL 第三讲---基础篇 库与表操作(下)