【发布时间】:2018-06-28 04:28:06
【问题描述】:
我想将一些表移动到新架构。当我移动它时,我在外键引用时遇到错误。我也尝试过授予权限。 Accounts 是地址表所在的旧模式,我将地址移到了一个名为 address 的新模式中。我得到错误表或视图不存在:
CREATE TABLE ACCOUNTS.PARTY_ADDRESS
(
PARTY_ID NUMBER(18,0),
ADDRESS_ID NUMBER(18,0),
CONSTRAINT PARTY_ADDRESS_PK PRIMARY KEY (PARTY_ID, ADDRESS_ID),
constraint PARTY_ADDRESS_party_fk foreign key (PARTY_ID)
references PARTY(id),
constraint PARTY_ADDRESS_ADDRESS_UNQ unique (ADDRESS_ID)
);
ALTER TABLE ACCOUNTS.PARTY_ADDRESS ADD CONSTRAINT PARTY_ADDRESS_address_fk FOREIGN KEY (ADDRESS_ID) REFERENCES ADDRESS.ADDRESS(id);
我也给了地址:
GRANT ALL ON ADDRESS.ADDRESS TO ACCOUNTS;
【问题讨论】:
-
我认为您需要删除约束并重新创建它们。
-
@GordonLinoff 对不起,我不明白你想说什么
-
我从不热衷于多模式设计,因为它们使开发、维护、支持和部署变得复杂,而且通常只有很小的好处。通常,当您确实有多个模式时,最好尽量减少它们之间的依赖关系。我认为我在我曾经工作过的任何系统中都没有看到过跨模式外键。