要重命名CHECK我用這樣的查詢:爲什麼sp_rename不適用於CHECK約束?
EXEC sp_rename 'test_create_table.test_check.check_1', 'check1', 'OBJECT'
查詢執行沒有錯誤,但約束的名稱沒有改變。
有人知道爲什麼嗎?
要重命名CHECK我用這樣的查詢:爲什麼sp_rename不適用於CHECK約束?
EXEC sp_rename 'test_create_table.test_check.check_1', 'check1', 'OBJECT'
查詢執行沒有錯誤,但約束的名稱沒有改變。
有人知道爲什麼嗎?
你要特別留意的警告documentation在頁面上:
如果要重命名的對象是一種約束, OBJECT_NAME必須在形式schema.constraint。
我不認爲你給的名字是。所以,如果這是一個表上的約束在foobar
模式稱爲test_create_table
,你實際上需要的是:
EXEC sp_rename 'foobar.check_1', 'check1', 'OBJECT'
我不知道爲什麼它不提供任何形式的反饋,當你嘗試的另一種方式,但你會注意到,你不收到此消息之一:
注意:更改對象名可能會破壞腳本和存儲過程的任何部分。
這是通常的輸出時sp_rename
是成功。
是的,問題出現在對象定義的表名中。僅需要使用:schema_name.constraint_name – kaa
這應該成功重命名您的表。我修改了一下你的命令。
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
與目標代碼的例子是在底部。
不,我嘗試從schema test_create_table中的表test_check的名稱check_1重命名CONSTRAINT。 – kaa
你以後在哪裏檢查名字? –
是的。在sys.check_constraints中 - 約束的名稱沒有改變。也在sys.objects中。 – kaa