判断数据表存在也罢
判断数据表存在与否
判断数据库中表是否存在时,列出两种方法如下:
IF EXISTS(SELECT * FROM sys.objects WHERE name = N'Table_Name') 和
IF EXISTS(SELECT * FROM sys.objects WHERE OBJECTPROPERTY(OBJECT_ID(N'Table_Name'), N'IsUserTable') = 1)
请问,这两者有什么区别?
------解决方案--------------------
OBJECTPROPERTY好像是2005才出现的函数,从你这两句话来看,下一句更严谨,只判断用户表,而上面那句,可能会查询系统表
如果是2005及以上版本,用户表可以直接从sys.tables里面查询
------解决方案--------------------
SELECT * FROM sys.objects WHERE name = N'Table_Name'
这个Name是object name 不一定是表
------解决方案--------------------
第一句判断表是否存在还不一定全面,一般都是这样写
判断数据库中表是否存在时,列出两种方法如下:
IF EXISTS(SELECT * FROM sys.objects WHERE name = N'Table_Name') 和
IF EXISTS(SELECT * FROM sys.objects WHERE OBJECTPROPERTY(OBJECT_ID(N'Table_Name'), N'IsUserTable') = 1)
请问,这两者有什么区别?
------解决方案--------------------
OBJECTPROPERTY好像是2005才出现的函数,从你这两句话来看,下一句更严谨,只判断用户表,而上面那句,可能会查询系统表
如果是2005及以上版本,用户表可以直接从sys.tables里面查询
------解决方案--------------------
SELECT * FROM sys.objects WHERE name = N'Table_Name'
这个Name是object name 不一定是表
------解决方案--------------------
第一句判断表是否存在还不一定全面,一般都是这样写
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].['+@table+']') AND type in (N'U')