2014-01-10 30 views
1

要重命名CHECK我用這樣的查詢:爲什麼sp_rename不適用於CHECK約束?

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

查詢執行沒有錯誤,但約束的名稱沒有改變。

有人知道爲什麼嗎?

+0

你以後在哪裏檢查名字? –

+0

是的。在sys.check_constraints中 - 約束的名稱沒有改變。也在sys.objects中。 – kaa

回答

2

你要特別留意的警告documentation在頁面上:

如果要重命名的對象是一種約束, OBJECT_NAME必須在形式schema.constraint

我不認爲你給的名字是。所以,如果這是一個表上的約束在foobar模式稱爲test_create_table,你實際上需要的是:

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

我不知道爲什麼它不提供任何形式的反饋,當你嘗試的另一種方式,但你會注意到,你收到此消息之一:

注意:更改對象名可能會破壞腳本和存儲過程的任何部分。

這是通常的輸出時sp_rename成功

+0

是的,問題出現在對象定義的表名中。僅需要使用:schema_name.constraint_name – kaa

0

這應該成功重命名您的表。我修改了一下你的命令。

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

只是驗證我所看到的 - test_create_table是您的架構的名稱,test_check是您的表的名稱,並且您將該表留至check1?

此外,它看起來像你包括一個對象。確保你已經創建了你的obect:CREATE OBJECT YourObjectName ON在這裏包含你的表格信息。

這個鏈接也可能有助於:http://technet.microsoft.com/en-us/library/ms188351.aspx

與目標代碼的例子是在底部。

+0

不,我嘗試從schema test_create_table中的表test_check的名稱check_1重命名CONSTRAINT。 – kaa