检查表是不是存在后,将架构添加到 SQL 中的缺失表

Posted

技术标签:

【中文标题】检查表是不是存在后,将架构添加到 SQL 中的缺失表【英文标题】:add schema to a missed table in SQL after checking if the table exists检查表是否存在后,将架构添加到 SQL 中的缺失表 【发布时间】:2017-10-18 15:18:50 【问题描述】:

我正在尝试将架构添加到丢失的表“myTable”中。我希望表格位于 'dbo.myTable' 下

编辑

我无法添加代码,但不允许堆栈溢出。我想检查 sys.tables 中是否存在并进行更改架构传输。

【问题讨论】:

完全不清楚。 CREATE TABLE IF NOT EXISTS equivalent in SQL Server的可能重复 How do I move a table into a schema in T-SQL的可能重复 我无法添加代码,但堆栈溢出不允许。我想检查 sys.tables 中是否存在并进行更改架构传输。 【参考方案1】:

SQL Server 中的表将始终属于一个模式,默认设置下,如果未指定其他表,它将属于 dbo 模式。

【讨论】:

【参考方案2】:

默认架构是dbo,但如果由于某种原因它位于不同的架构中,您可以将表从alter schematransfer 转换为transfer

alter schema dbo transfer [current_schema_name].mytable;

如果表存在,则要传输架构,您可以使用以下内容:

if exists (select 1
           from sys.objects o
           where schema_name(o.schema_id)<>N'dbo'
             and o.name = 'mytable'
           )
alter schema dbo transfer test.mytable;

rextester 演示:http://rextester.com/TEBRQL57704

【讨论】:

有没有办法检查 sys.tables 中的表是否存在并像你的答案一样执行改变模式? 是的,这是可能的。 @GK_Starts_Coding 乐于助人!

以上是关于检查表是不是存在后,将架构添加到 SQL 中的缺失表的主要内容,如果未能解决你的问题,请参考以下文章

SQL 表变量 - 添加检查匹配行集是不是存在的约束

PHP在更新SQL表之前检查文件是不是存在

检查架构中的 IF 表 EXISTS 时发生 Oracle PL/SQL 过程错误 [重复]

不存在多于一列

通过在 Sql 中使用表名中的特定单词检查表是不是存在

将空值设置为缺失表字段的默认值