在操作之前存在表

Posted

技术标签:

【中文标题】在操作之前存在表【英文标题】:Existence of a table before an operation 【发布时间】:2019-09-04 09:11:22 【问题描述】:

我想对表的存在进行测试以执行以下操作:

如果(表存在)那么我的操作将是插入到表中

否则我会做的:

 select * into Table from MySource

我们如何使用 SQL 执行此操作?

当我检查表的存在时:

IF EXISTS (SELECT * FROM Table)
    print 'OK'
Else
    Print 'KO'

当表不存在时,我没有得到 KO。

【问题讨论】:

【参考方案1】:
IF(OBJECT_ID('[Your Table]') IS NOT NULL)
    PRINT 'OK'
ELSE
    PRINT 'NOK'

【讨论】:

【参考方案2】:
IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'yourschema' 
                     AND  TABLE_NAME = 'yourtable'))
    BEGIN
        PRINT 'OK'
   ELSE

        PRINT 'KO'
    END

【讨论】:

您错过了第一个BEGIN 的“END”,也错过了ELSE 部分的BEGIN 我们没有得到 KO

以上是关于在操作之前存在表的主要内容,如果未能解决你的问题,请参考以下文章

检查是否存在临时表,并在创建临时表之前删除它是否存在

Oracle删除表字段之前判断表字段是否存在

在插入表之前检查数据是不是存在

oracle创建表之前判断表是不是存在,如果存在则删除已有表

Oracle - 在删除其他表中的几行之前检查行是不是存在

如何在插入 MySQL 之前检查表中是不是存在名称 [重复]