2013-11-01 17 views
6

SQLデータベースのコードを見つけていない親キー:O1RA-0229整合性制約 -

CREATE TABLE MYBUILDING 
(
B_NUMBER NUMBER(1)  NOT NULL, 
NAME VARCHAR2(25)  NOT NULL, 
ADDRESS VARCHAR2(40)  NOT NULL, 
P_CODE VARCHAR2(6) , 
FLOOR_NUM_UP NUMBER(3)  DEFAULT '1' NOT NULL CHECK (FLOOR_NUM_UP >= 0), 
FLOOR_NUM_DOWN NUMBER(3) DEFAULT '0' NOT NULL CHECK (FLOOR_NUM_DOWN >= 0), 
CONS_DATE DATE   NOT NULL, 
PRIMARY KEY (B_NUMBER) 
); 
------- 
CREATE TABLE FLOOR 
(
B_NUMBER NUMBER(1)  NOT NULL, 
F_NUMBER NUMBER(2)  NOT NULL CHECK (F_NUMBER >= -4 AND F_NUMBER <= 25), 
SPACE_M NUMBER(4)  NOT NULL CHECK (SPACE_M > 0), 
PRIMARY KEY (B_NUMBER, F_NUMBER), 
FOREIGN KEY (B_NUMBER) REFERENCES MYBUILDING 
); 
------ 
CREATE TABLE TENANT 
(
TENANT_NUM NUMBER(3)  NOT NULL, 
TENANT_NAME VARCHAR2(40) NOT NULL, 
C_NAME VARCHAR2(40)  NOT NULL, 
C_ADDRESS VARCHAR2(40), 
P_CODE VARCHAR2(6), 
P_NUMBER NUMBER(12), 
PRIMARY KEY (TENANT_NUM) 
);   
------- 
CREATE TABLE LOCATION 
(
B_NUMBER NUMBER(1)  NOT NULL, 
F_NUMBER NUMBER(2)  NOT NULL, 
L_NUMBER NUMBER(3)  NOT NULL CHECK (L_NUMBER > 0 AND L_NUMBER < 100), 
SPACE_M NUMBER(4)  NOT NULL, 
RATE NUMBER(5)   NOT NULL CHECK (RATE >= 0 AND RATE <= 350), 
RENT NUMBER(4)   NOT NULL, 
S_DATE DATE, 
E_DATE DATE, 
TENANT_NUM NUMBER(3), 
PRIMARY KEY (L_NUMBER, F_NUMBER, TENANT_NUM), 
CONSTRAINT FK_TENANT FOREIGN KEY (TENANT_NUM) REFERENCES TENANT ON DELETE SET NULL, 
FOREIGN KEY (B_NUMBER, F_NUMBER) REFERENCES FLOOR 
); 

みなさん、こんにちは!私は一連のテーブルを作って、私はすべてが正しいと思った。私はLOCATIONテーブルを除いてすべてのテーブルの入力値をヒッチせずに入力しました。

これは私に与えられたエラーです。 ORA-02291:行1で

INSERT INTO LOCATION VALUES (1, 1, 1, 300, 101, 0, '01-JAN-2004', '30-JUN-2004', 1); 
INSERT INTO LOCATION VALUES (1, 1, 1, 300, 101, 0, '01-JAN-2004', '30-JUN-2004', 1) 

ERROR整合性制約(ASSIGNMENT.FK_TENANTは)違反 - キーの親が見つかりません。

ご意見やご感想をお寄せください。ありがとう!

固定。

CREATE TABLE LOCATION(

B_NUMBER NUMBER(1)  NOT NULL, 

F_NUMBER NUMBER(2)  NOT NULL, 

L_NUMBER NUMBER(3)  NOT NULL CHECK (L_NUMBER > 0 AND L_NUMBER < 100), 

SPACE_M NUMBER(4)  NOT NULL, 


RATE NUMBER(5)   NOT NULL CHECK (RATE >= 0 AND RATE <= 350), 

RENT NUMBER(4)   NOT NULL, 

S_DATE DATE, 

E_DATE DATE, 

TENANT_NUM NUMBER(3)  NULL, 

PRIMARY KEY (L_NUMBER, B_NUMBER, F_NUMBER, TENANT_NUM), 

FOREIGN KEY (TENANT_NUM) REFERENCES TENANT ON DELETE SET NULL, 

FOREIGN KEY (B_NUMBER, F_NUMBER) REFERENCES FLOOR 

); 
+1

だから何が問題なのですか? (タグ、タイトル、エラーメッセージはすべてをカバーしているようです。) – user2864740

答えて

6

あなたのinsert文は、テナントテーブルに存在しない列TENANT_NUMに値を挿入しようとしている - (所在地テーブルの外部キー制約があります)。

+0

完璧な感覚を築いてくれてありがとう!すべてが今うまくいく!また、LOCATIONテーブルの下でTENANT_NUMにヌル値を入力することが可能かどうか尋ねたいと思いますか? –

+0

TENANT_NUMはそのテーブルの主キーの一部ですので、答えは「いいえ」です。 – user172839

関連する問題