【问题标题】:How to change a constraint name and schema on Sql Server如何在 Sql Server 上更改约束名称和架构
【发布时间】:2014-10-14 08:37:46
【问题描述】:

我刚刚将我的Member 表从MRK 架构移动到GNR

我之前有下面的脚本来设置它的主键:

If not Exists (select 1 
               from sys.objects 
               where name = 'PK_MRK_Member'
              )
        ALTER TABLE      [MRK].[Member] 
        ADD   CONSTRAINT [PK_MRK_Member] PRIMARY KEY CLUSTERED 
        (
          [MemberID] ASC
        ) ON [PRIMARY]
GO

我现在如何更改已定义约束的名称和架构?

我尝试exec sp_rename 'PK_MRK_Member', 'PK_GNR_Member', 'INDEX' 更改名称,但收到此错误:

Either the parameter @objname is ambiguous or the claimed @objtype (INDEX) is wrong.

P.S.:我无法删除表和/或 PK 约束并再次创建它们,因为它们的 PK 已被其他表使用。

【问题讨论】:

  • 感谢@PrasanthVJ 和 Jeroen Mostert 的帮助,我想我会放弃的 :)
  • 一般来说,您不能更改约束。但是这种情况很特殊——虽然主键是一个约束,但底层索引可以被重命名,根据下面的@vladimir-semashkin。

标签: sql sql-server database-schema sp-rename


【解决方案1】:

我看到你的第一个参数对于过程sp_rename 是错误的。当您重命名索引时,您应该指定架构和表以及索引名称。 以link 为例

【讨论】:

  • 在上面的代码中,应该进行重命名的语句是exec sp_rename 'GNR.Member.PK_MRK_Member', 'PK_GNR_Member', 'INDEX'。索引的架构始终是其父表的架构,因此无需单独重命名。
猜你喜欢
  • 2013-04-18
  • 1970-01-01
  • 2017-10-22
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
相关资源
最近更新 更多