sql server 判断是否存在数据库,表,列,视图
1 判斷數據庫是否存在
if exists (select * from sys.databases where name = '數據庫名')?
? drop database [數據庫名]
2 判斷表是否存在
if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)?
? drop table [表名]
3 判斷存儲過程是否存在
if exists (select * from sysobjects where id = object_id(N'[存儲過程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)?
? drop procedure [存儲過程名]
4 判斷臨時表是否存在
if object_id('tempdb..#臨時表名') is not null???
? drop table #臨時表名
5 判斷視圖是否存在
--SQL Server 2005??
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[視圖名]'
print '存在'
else
print '不存在'
6 判斷函數是否存在
--? 判斷要創建的函數名是否存在???
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函數名]') and xtype in (N'FN', N'IF', N'TF'))???
? drop function [dbo].[函數名]?
7 獲取用戶創建的對象信息
SELECT [name],[id],crdate FROM sysobjects where xtype='U'
? /*?
xtype 的表示參數類型,通常包括如下這些?
C = CHECK 約束?
D = 默認值或 DEFAULT 約束?
F = FOREIGN KEY 約束?
L = 日志?
FN = 標量函數?
IF = 內嵌表函數?
P = 存儲過程?
PK = PRIMARY KEY 約束(類型是 K)?
RF = 復制篩選存儲過程?
S = 系統表?
TF = 表函數?
TR = 觸發器?
U = 用戶表?
UQ = UNIQUE 約束(類型是 K)?
V = 視圖?
X = 擴展存儲過程?
*/?
8 判斷列是否存在
if exists(select * from syscolumns where id=object_id('表名') and name='列名')?
? alter table 表名 drop column 列名
9 判斷列是否自增列
if columnproperty(object_id('table'),'col','IsIdentity')=1?
? print '自增列'?
else?
? print '不是自增列'
?
SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('表名')? AND is_identity=1
10 判斷表中是否存在索引
if exists(select * from sysindexes where id=object_id('表名') and name='索引名')???
? print? '存在'???
else???
? print? '不存在'
11 查看數據庫中對象
SELECT * FROM sys.sysobjects WHERE name='對象名'? SELECT * FROM sys.sysobjects WHERE name='對象名'
總結
以上是生活随笔為你收集整理的sql server 判断是否存在数据库,表,列,视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 的变量书写规则探讨
- 下一篇: delphi接口基本学习摘录