为什么sp_rename不适用于CHECK约束?

时间:2014-01-10 13:49:01

标签: sql-server rename check-constraint

要重命名CHECK,我使用如下查询:

 EXEC sp_rename 'test_create_table.test_check.check_1', 'check1', 'OBJECT'

查询执行时没有错误,但约束名称未更改。

有人知道为什么吗?

2 个答案:

答案 0 :(得分:2)

您需要特别注意documentation页面上的警告:

  

如果要重命名的对象是约束, object_name 必须采用 schema.constraint 形式。

我不认为你给的名字是。因此,如果这是test_create_table架构中名为foobar的表的约束,那么您实际需要的是:

EXEC sp_rename 'foobar.check_1', 'check1', 'OBJECT'

我不知道为什么当你以其他方式尝试时它没有提供任何形式的反馈,但你会注意到收到此消息:

  

警告:更改对象名称的任何部分可能会破坏脚本和存储过程。

sp_rename 成功时通常的输出。

答案 1 :(得分:0)

这应该成功重命名你的表。我稍微修改了你的命令。

EXEC sp_rename'test_create_table.test_check','check1';

只是验证我所看到的内容 - test_create_table是您的架构的名称,test_check是您的表的名称,您是否正在将表重新映射到check1?

此外,它看起来像是包含一个对象。确保已创建对象:CREATE OBJECT YourObjectName     在此处包括您的表格信息。

此链接也可能有所帮助:http://technet.microsoft.com/en-us/library/ms188351.aspx

目标代码的示例位于底部。