【发布时间】:2015-02-26 23:30:00
【问题描述】:
我有一个为 Oracle 数据库编写的脚本,我将其转换为在 SQL Server 中工作,我有两个关于特定代码部分的问题。
在 Oracle 脚本中,我有以下代码:
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;
问题(一)
根据上面的代码,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 时会自动创建 UNIQUE INDEX。那么上面的那一行SQL Server代码和上面的两行Oracle代码是不是一样的呢?
编辑
最后一个问题。 Oracle 和 SQL Server 中有没有办法将现有的INDEX 分配给CONSTRAINT?
【问题讨论】:
标签: sql sql-server oracle sql-server-2008 oracle11g