[英]How to check if a table already exists in the database?
现在我使用的是:
IF (object_id('table', 'U') is not null)
AND (NOT EXISTS (SELECT * FROM [table] WHERE id = 0))
RETURN;
检查我的数据库中是否已存在此“表”,但如果当前数据库中没有此类表,则在运行脚本时会收到下一条错误消息:
Msg 208,Level 16,State 1,Line 5
无效的对象名称'table'。
这是检查数据库中是否存在表的正确方法吗? 或者我可能必须更改SQL Management Studio的任何设置?
答案 :我改变了我的脚本,一切运作良好:
IF (object_id('table', 'U') is not null)
IF (NOT EXISTS (SELECT * FROM [table] WHERE id = 0))
RETURN;
IF EXISTS (SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'table')
AND type in (N'U'))
我遇到了类似的问题,发现这样做有助于查询。 N
meerly表示unicode
if (object_id('tablex', 'U') is not null)
begin
select * from tablex
end
适合我。 如果该表不存在,那么应该推迟该语句的编译(假设您使用的是SQL Server 2005+)。
如果你是后立即引用除声明以外的任何表if
你需要使用begin...end
。
你需要使用
IF (object_id('table', 'U') is not null)
IF (NOT EXISTS (SELECT * FROM [table] WHERE id = 0))
RETURN;
您现有的语句无法按原样编译。 整个语句被编译,并且所有对象必须在该点存在,即使先前已经推迟了语句的编译。
这可能对你更好
if (object_id('table', 'U') is not null)
if not exists (SELECT * FROM [table] WHERE id = 0)
你可以这样做:
IF (EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='QRTZ_JOB_DETAILS'))
BEGIN
PRINT 'EXISTS'
END
其中TABLE_NAME是您要在数据库中检查的表的名称ob。
更新:
如果您使用的是SQL SERVER 2000+,那么msarchet的答案更合适。
这是众多方式之一。
IF EXISTS (SELECT 1
FROM sysobjects
WHERE xtype='u' AND name='tablename')
SELECT 'tablename exists.'
ELSE
SELECT 'tablename does not exist.'
我想你提供表名到[表],如果是这样,试着把它改成别的东西。 那我觉得它会很好用。 那么上述所有答案都可以正常使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.