当前位置: 首页 > 知识库问答 >
问题:

在SQL中更改表的模式名

熊朝
2023-03-14

我想更改数据库中< code>Employees表的模式名。当前表中的< code>Employees数据库模式名为< code>dbo,我想将其更改为< code>exe。我该怎么做?

例子:

dbo.Employees

收件人

exe.Employees

我尝试了这个查询:

ALTER SCHEMA exe TRANSFER dbo.Employees

但是这给了我一个错误:

无法更改架构“exe”,因为它不存在或您没有权限。

我错过了什么?

共有3个答案

缪兴腾
2023-03-14

试试下面

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end
欧照
2023-03-14
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

当我在SQL中使用ALTER ScheMA查询时,我总是必须使用括号,否则会收到错误消息。

师腾
2023-03-14

创建架构 :

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

更改架构:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
 类似资料:
  • 问题内容: 我们需要将某些列的数据类型从int更改为bigint。不幸的是,其中一些表很大,大约有7-10百万行(但不宽)。 Alter表alter列将永远保留在这些表上。有没有更快的方法来实现这一目标? 问题答案: 巧合的是,大约3个小时前,我不得不做一些非常相似的事情。该表是3500万行,它相当宽,并且花了很多时间才能做到这一点: 这就是我最终得到的结果: 这次,这些陈述几乎是即时的。(在速度

  • 问题内容: 我有这样的查询结果: 列数未知,因为它是数据透视查询的结果。 我想将列的名称更改为如下所示: 颜色是我从另一个表中检索到的信息。 我怎样才能做到这一点? 谢谢 编辑:这是查询。 问题答案: 模式设置 : 查询 :

  • 问题内容: 我有一个表,其数据对的建模如下: 然后总是更大。这些对表示要进行的替换。因此,将100替换为50,然后将50替换为40,然后将其替换为10。 因此结果将是这样的: 有没有一种我可以更改或加入此表来表示的简洁方法? 我知道我可以自己加入类似于以下内容的内容: 但是,这需要多次通过,因此,为什么我问是否有更好的方法来完成它? 问题答案: 结果:

  • 我正在使用Android和ORMLite。我是新手,正在将数据库升级到版本2。我有“Auto”类,需要删除列别名。 我将类Auto更改为... 我需要知道在执行“onUpgradeMethod”时,ORMLite是否会自动删除列别名,或者我必须手动这样做。

  • 我有数据库名称:PMKIT,前缀Table:PMKIT.TableName。我想重命名PMKIT。TableName到DBO.TableName。你能帮助我吗!

  • 问题内容: 假设我有一个包含两列的表格(日期和价格)。如果我选择一个日期范围,那么是否有一种方法可以计算价格随时间变化的次数? 例如: 在这种情况下,我希望它返回4个价格变化的计数。 提前致谢。 问题答案: 您可以使用分析功能并访问结果集的上一行和下一行,然后使用该功能查看是否有更改。