sysobjects表
數據庫中所創建的每個對象(約束、默認值、日誌、規則、存儲過程等)都各以一行資訊呈現於表中。
而臨時對象只有在tempdb內,才在該表中各佔一行。
sysobjects 表結構:
列名 | 數據類型 | 描述 |
name | sysname | 對象名,常用列 |
id | int | 對象標識號 |
xtype | char(2) | 對像類型。常用列。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 =擴展存儲過程 |
uid | smallint | 所有者用戶對象編號 |
info | smallint | 保留。僅限內部使用 |
status | int | 保留。僅限內部使用 |
base_schema_ ver | int | 保留。僅限內部使用 |
replinfo | int | 保留。供複製使用 |
parent_obj | int | 父對象的對象標識號(例如,對於觸發器或約束,該標識號為表ID)。 |
crdate | datetime | 對象的創建日期。 |
ftcatid | smallint | 為全文索引註冊的所有用戶表的全文目錄標識符,對於沒有註冊的所有用戶表則為 0 |
schema_ver | int | 版本號,該版本號在每次表的架構更改時都增加。 |
stats_schema_ ver | int | 保留。僅限內部使用。 |
type | char(2) | 對像類型。可以是下列值之一: C = CHECK約束D =默認值或DEFAULT約束F = FOREIGN KEY約束 FN =標量函數IF =內嵌表函數K = PRIMARY KEY或UNIQUE約束 L =日誌P =存儲過程R =規則RF =複製篩選存儲過程 S =系統表TF =表函數TR =觸發器U =用戶表V =視圖X =擴展存儲過程 |
userstat | smallint | 保留。 |
sysstat | smallint | 內部狀態信息 |
indexdel | smallint | 保留 |
refdate | datetime | 留用 |
version | int | 保留 |
deltrig | int | 保留 |
instrig | int | 保留 |
updtrig | int | 保留 |
seltrig | int | 保留 |
category | int | 用於發布、約束和標識 |
cache | smallint | 保留 |
可用where條件命令列出所感興趣的對象:
SELECT * FROM sysobjects WHERE xtype = ' V '
判斷數據庫中是否已經存在某個表,有的話就刪除該表
-- 方法一: if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[表名] ' ) and OBJECTPROPERTY (id, N ' IsUserTable ' ) = 1 ) drop table [ dbo ] . [ 表名] -- 方法二: if exists ( select * from sysobjects where id = object_id (N ' 表名' ) and OBJECTPROPERTY (id, N ' IsUserTable ' ) = 1 ) drop table [ dbo ] . [ 表名] -- 方法三: if ( Exists ( Select * From SysObjects Where xtype = ' U ' And Name = ' 表名' )) drop table [ dbo ] . [ 表名]
註1: N''代表Unicode類型.可以支持不同語種的對象名
註2:OBJECTPROPERTY避免誤刪非使用者創建的資料
OBJECTPROPERTY ( id , property )
id:表示當前數據庫中對象ID的表達式。id是int,並且被假定為當前數據庫上下文中的模式作用域對象。
property:是表示由id指定的對象返回的信息的表達式。
如果為True 回傳 1,如果為Falsec回傳 0。
資訊參照《一棵樹-博客園》