我想記住一些sql語法,並且已經獲得了ALTER TABLE ADD CONSTRAINT語法。我相信我是正確的,當我說當你使用這個語法來添加一個FOREIGN KEY或PRIMARY KEY約束時,那個sql server會自動創建索引來支持約束操作。 (這是真的......還是僅僅在PK上而不是在FK上?)當刪除約束時,支持索引是否也會被刪除?
如果是這樣,當你使用ALTER TABLE DROP CONSTRAINT語法時......是否支持索引自動下降?這些隱式支持索引可以被明確地刪除嗎?如果是的話CONSTRAINT自動刪除?
我只是想知道它是如何工作「下蓋」。谷歌搜索沒有幫助。我想我可以查詢一些sys表來發現真相,但我認爲我會在這裏嘗試。
感謝您的幫助。
賽斯
並非總是如此。如果表上已經有聚簇索引,則PRIMARY KEY約束將由唯一的非聚簇索引強制執行。 – 2010-02-18 20:28:59
在SQL Server 2008中,外鍵與索引有一些共同之處。我無法刪除索引(並且它不是主鍵索引),因爲如果被外鍵引用。 – LukLed 2010-02-18 20:32:40
@LukLed,當你使用FK強制實現一對多的父子關係時,如果你試圖在父對象上刪除唯一性約束,父對象需要是唯一的,它會拋出一個錯誤。 – 2010-02-18 20:34:50