转载地址:https://www.cnblogs.com/hclw/p/4233312.html
在sqlserver(应该说在目前所有数据库产品)中创建一个资源如表,视图,存储过程中都要判断与创建的资源是否已经存在
在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法
如下:
if object_id('tb_table') is not null
print 'exist'
else
print'not exist'
如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源
object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,
这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:
if object_id('tb_table','u') is not null
print 'exist'
else
print'not exist'
第二个参数 "u" 就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写
查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子
u ----------- 用户创建的表,区别于系统表(USER_TABLE)
s ----------- 系统表(SYSTEM_TABLE)
v ----------- 视图(VIEW)
p ----------- 存储过程(SQL_STORED_PROCEDURE)
可使用select distinct type ,type_desc from sys.objects 获得全部信息
库是否存在
if exists(select * from master..sysdatabases where name=N'库名')
print 'exists'
else
print 'not exists'
---------------
-- 判断要创建的表名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 删除表
drop table [dbo].[表名]
GO
---------------
-----列是否存在
IF COL_LENGTH( '表名','列名') IS NULL
PRINT 'not exists'
ELSE
PRINT 'exists'
alter table 表名 drop constraint 默认值名称
go
alter table 表名 drop column 列名
go
-----
--判断要创建临时表是否存在
If Object_Id('Tempdb.dbo.#Test') Is Not Null
Begin
print '存在'
End
Else
Begin
print '不存在'
End
---------------
-- 判断要创建的存储过程名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 删除存储过程
drop procedure [dbo].[存储过程名]
GO
---------------
-- 判断要创建的视图名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[视图名]') and OBJECTPROPERTY(id, N'IsView') = 1)
-- 删除视图
drop view [dbo].[视图名]
GO
---------------
-- 判断要创建的函数名是否存在
if exists (select * from sysobjects where xtype='fn' and name='函数名')
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))
-- 删除函数
drop function [dbo].[函数名]
GO
if col_length('表名', '列名') is null
print '不存在'
select 1 from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'
转载地址:https://www.cnblogs.com/hclw/p/4233312.html
相关推荐
sqlserver中判断表或临时表是否存在
Sql_Server中如何判断表中某列是否存在
本篇文章是对使用SQL Server判断文件是否存在后再删除进行了详细的分析介绍,需要的朋友参考下
有时候,我们的业务可能会这样要求:某张表是动态的,他要求每隔一段时间(如:一个月)自动生成一张结构相同的新表(如:日志表Log),这是我们要判断数据库中是否存在某张表,如果没有,则新建一张表,否者直接...
主要介绍了sql server中判断表或临时表是否存在的方法,需要的朋友可以参考下
主要给大家分享了Sql Server中判断表、列是否存在,如果不存在则创建的方法,文章先给大家简单介绍了Sql Server中判断表中某列是否存在的方法,文中给出了详细的示例代码,需要的朋友们可以参考借鉴,下面来一起看看...
在sqlserver中判断是否存在某个数据库或者表格
SQL SERVER中先判断视图是否存在,使用IF NOT EXISTS,然后再创建视图,使用create view,整个过程如下
sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:其中某些状态位可由用户使用 sp_dboption(read only、dbo use only、single user 等)进行设置: 1 = autoclose;使用 sp_dboption ...
pb中判断数据库服务是否存在,sqlserver数据库服务的状态控制启动关闭,
正在看的ORACLE教程是:oracle用什么SQL语句判断表存不存在。... 您可能感兴趣的文章:Sql Server中判断表、列不存在则创建的方法Mysql判断表字段或索引是否存在sql server判断数据库、表、列、视图是否存在用SQL语句查
呕心沥血两星期,终于完成了用delphi根据用户配置在SQL Sever中判断数据库、表是否存在,如果不存在,新建用户配置文件中的数据库、数据表的功能。为了让广大像我曾经一样迷惘的初级程序员快速的掌握delphi开发Sql ...
在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务。 1、 事务的特点 事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提交给数据库系统...
SQLSERVER遍历数据存在于表中的哪些字段
判断数据库中的某表是否存在,存在删除该表 8 修改表语法 8 删除数据表 8 约束 8 高级查询 9 聚合函数(统计) 10 SQL变量 11 局部变量 11 全局变量 11 SQL中的代码块 14 数据库中的if和else语句 14 SQL中的...
2 判断表是否存在 if exists (select * from sysobjects where id = object_id(N'[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) drop table [表名] 3 判断存储过程是否存在 if exists (select * from ...