我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论.
当谷歌找到答案时,你会得到很多不同的答案.这样做是否有正式/后向和前向兼容的方式?
这有两种可行的方法.这两者中哪一个是标准/最佳方式?
第一种方式:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='mytablename')
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
第二种方式:
IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
MySQL提供简单
SHOW TABLES LIKE '%tablename%';
Run Code Online (Sandbox Code Playgroud)
声明.我正在寻找类似的东西.
我们公司正在将其中一种产品从SQL Server 2005迁移到2008,并且在日志中我注意到有关删除表(如果不存在)的错误过多。在SQL Server 2005中,我们必须删除表
IF OBJECT_ID('dbo.Units', 'U') IS NOT NULL
DROP TABLE dbo.Units
Run Code Online (Sandbox Code Playgroud)
似乎不再起作用了。
仅当表存在于SQL Server 2008中时,删除表的正确方法是什么?
我想编写代码来检查 SQL Server 2008 中是否存在表,如果不存在,则创建它,然后将记录插入其中。请告诉我怎么做?是否有必要为其创建存储过程?