我有一個爲Oracle數據庫編寫的腳本,我正在將其轉換爲在SQL Server中工作,並且有兩個關於特定代碼段的問題。指定索引到約束條件
在甲骨文腳本我有這樣的代碼:
CREATE UNIQUE INDEX "PK_PORTALROLES" ON "PORTAL_ROLE" ("ROLE_NAME");
ALTER TABLE "PORTAL_ROLE" ADD CONSTRAINT "PK_PORTALROLES"
PRIMARY KEY ("ROLE_NAME") USING INDEX ENABLE;
問題(1)
從上面什麼是在ALTER TABLE
線做USING INDEX
命令的代碼?它是將第一行創建的UNIQUE INDEX
分配給新創建的CONSTRAINT
還是CONSTRAINT
創建時使用新的UNIQUE INDEX
?
問題(2)
在SQL Server複製此,我註釋掉CREATE UNIQUE INDEX
一行:
--CREATE UNIQUE INDEX "PK_PORTALROLES" ON "PORTAL_ROLE" ("ROLE_NAME");
然後替換這個ALTER TABLE
行:
ALTER TABLE "PORTAL_ROLE" ADD CONSTRAINT "PK_PORTALROLES" PRIMARY KEY ("ROLE_NAME");
據我所知,當在SQL Server中創建PRIMARY KEY CONSTRAINT
a UNIQUE INDEX
自動生成。那麼,直接在上面的SQL Server代碼的一行與上面的兩行Oracle代碼做同樣的事情呢?
編輯
最後一個問題。 Oracle和SQL Server中有沒有辦法將現有的INDEX
分配給CONSTRAINT
?
在SQL Server中,PK將只聚集,如果表不已經有一個聚集索引。如果一個表已經有一個聚集索引,它將被保留。 –