函数OBJECT_ID的第二个参数

时间:2017-01-16 04:13:42

标签: sql sql-server tsql

我在Itzik Ben-Gan的“TSQL Fundamentals”一书中遇到过以下代码。

我知道函数OBJECT_ID用于检查特定对象是否存在。但是我对它的第二个参数N'U'感到有点困惑。

我查了MSDN documentation,它说第二个参数代表对象类型,但我仍然不明白N'U'代表什么。

有人可以向我解释它实际上代表什么吗?

IF OBJECT_ID(N'dbo.Employees', N'U') IS NOT NULL
BEGIN
    IF OBJECTPROPERTY(OBJECT_ID(N'dbo.Employees', N'U'), N'TableTemporalType') = 2
        ALTER TABLE dbo.Employees SET(SYSTEM_VERSIONING = OFF);

2 个答案:

答案 0 :(得分:5)

如果您点击链接到types: sys.objects

的页面中的链接
  

U =表(用户定义)

完整列表(截至2017-01-16)

  

对象类型:

     

AF =聚合函数(CLR)

     

C = CHECK约束

     

D = DEFAULT(约束或独立)

     

F = FOREIGN KEY约束

     

FN = SQL标量函数

     

FS =汇编(CLR)标量函数

     

FT =汇编(CLR)表值函数

     

IF = SQL内联表值函数

     

IT =内部表

     

P = SQL存储过程

     

PC =汇编(CLR)存储过程

     

PG =计划指南

     

PK = PRIMARY KEY约束

     

R =规则(旧式,独立)

     

RF =复制过滤器程序

     

S =系统基表

     

SN =同义词

     

SO =序列对象

     

适用于:SQL Server 2012到SQL Server 2016。

     

SQ =服务队列

     

TA =汇编(CLR)DML触发器

     

TF = SQL table-valued-function

     

TR = SQL DML触发器

     

TT =表格类型

     

U =表(用户定义)

     

UQ = UNIQUE约束

     

V =查看

     

X =扩展存储过程

     

适用于:SQL Server 2016到SQL Server 2016,Azure SQL   数据库,Azure SQL数据仓库,并行数据仓库。

     

ET =外部表

答案 1 :(得分:1)

SELECT DISTINCT type,type_desc FROM sys.objects
type type_desc
---- ------------------------------------------------------------
TT   TYPE_TABLE
FN   SQL_SCALAR_FUNCTION
SN   SYNONYM
IF   SQL_INLINE_TABLE_VALUED_FUNCTION
UQ   UNIQUE_CONSTRAINT
SQ   SERVICE_QUEUE
F    FOREIGN_KEY_CONSTRAINT
U    USER_TABLE
D    DEFAULT_CONSTRAINT
PK   PRIMARY_KEY_CONSTRAINT
V    VIEW
S    SYSTEM_TABLE
IT   INTERNAL_TABLE
P    SQL_STORED_PROCEDURE
TF   SQL_TABLE_VALUED_FUNCTION