当前位置: 首页 > 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

相关文章:

  • 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学习(五)
  • 深圳市政协原副主席王幼鹏被“双开”
  • 央行最新报告:积极落地5月推出的一揽子金融政策,促进经济供需平衡、物价合理回升
  • 趣看 | 五一黄金周:你拍风景,拍风景的人在拍你
  • 经济日报:降准降息,提前还房贷划算吗?
  • 4月外汇储备增加410亿美元,黄金储备连续6个月增加
  • 上海明后天将迎强风大雨,陆地最大阵风7~9级