SQLAnywhere:重命名外鍵或主鍵
我有一個包含許多重複索引、外鍵和主鍵名稱的數據庫。可以使用以下方法重命名重複的索引名稱:
ALTER INDEX <index name> ON <creator>.<tablename> RENAME TO <new name>
所以這是固定的。
但是鍵不是索引,因此它不適用於鍵:
"Cannot find index named '<index name>'"
有一個約束重命名語法:
ALTER TABLE <creator>.<tablename> RENAME CONSTRAINT <constraint name> TO <new name>
這也不適用於鍵:
"Constraint '<constraint name>' not found"
有沒有辦法在 SQLAnywhere 中重命名外鍵或主鍵而不刪除和重新創建鍵?
你沒有說你使用的是哪個版本的 SQL Anywhere,但在 16 中我認為你可以使用 ALTER INDEX 來做你想做的事。從幫助:
ALTER INDEX 語句
重命名索引、主鍵或外鍵,或更改索引的聚集性質。
句法
ALTER { INDEX索引名稱
| [索引]外鍵角色名
| [索引]主鍵} 開
$$ owner. $$對象名稱 {重建| 重命名子句 | 集群子句 } 對象名:表名 | 物化視圖名稱
重命名子句:重命名{ AS | TO } 新索引名稱
集群子句:集群| 非集群的
參數
rename-clause 指定索引、主鍵或外鍵的新名稱。
重命名外鍵或主鍵的基礎索引時,索引的相應 RI 約束名稱不會更改。但是,外鍵角色名稱(如果適用)與索引名稱相同並已更改。如有必要,使用 ALTER TABLE 語句重命名 RI 約束名稱。
cluster-clause 指定索引是否應更改為 CLUSTERED 或 NONCLUSTERED。一張表上只能有一個索引可以聚集。
REBUILD 子句 使用此子句重建索引,而不是刪除並重新創建它。
評論
ALTER INDEX 語句執行兩項任務:
它可用於重命名索引、主鍵或外鍵。
它可用於將索引類型從非聚群更改為聚群,反之亦然。
ALTER INDEX 語句可用於更改索引的分群規範,但不會重新組織數據。同樣,每個表或物化視圖只能聚集一個索引。
ALTER INDEX 不能用於更改本地臨時表上的索引。嘗試這樣做會導致 Index not found 錯誤。
當使用 WITH HOLD 子句打開的游標使用語句或事務快照時,無法執行此語句。
請注意它所說的使用 ALTER TABLE 語句在需要時重命名約束名稱。如果您需要更多幫助,請嘗試http://sqlanywhere-forum.sap.com/上的專用 SQL Anywhere 論壇