2012-12-07 68 views
0

我正在使用Oracle Express Eddition 10g。Oracle - 我可以使用命名約束來聲明外鍵嗎?

下DDL拋出一個DB錯誤就行了 「提及TABLE_A_PK」

「SQL錯誤:ORA-00942:表或視圖不存在」

CREATE TABLE TABLE_A (
    COLUMN_A NUMBER, 
    COLUMN_B NUMBER, 
    COLUMN_C NUMBER, 
    COLUMN_D NUMBER, 
    CONSTRAINT TABLE_A_PK 
     PRIMARY KEY (COLUMN_A, COLUMN_B) 
) 

CREATE TABLE TABLE_B (
    COLUMN_A NUMBER, 
    COLUMN_B NUMBER, 
    COLUMN_Y NUMBER, 
    COLUMN_Z NUMBER, 

    CONSTRAINT TABLE_A_FK 
     FOREIGN KEY (COLUMN_A, COLUMN_B) 
     REFERENCES TABLE_A_PK 
) 

我可以使用一個名爲限制爲外鍵引用?如果是這樣如何?

回答

1

您不指定您引用的鍵的名稱,而是指定列,否則不能引用約束的名稱。你需要指定類似

CREATE TABLE TABLE_B (
    COLUMN_A NUMBER, 
    COLUMN_B NUMBER, 
    COLUMN_Y NUMBER, 
    COLUMN_Z NUMBER, 

    CONSTRAINT TABLE_A_FK 
     FOREIGN KEY (COLUMN_A, COLUMN_B) 
     REFERENCES TABLE_A(COLUMN_A, COLUMN_B) 
)