2016-01-28 100 views
0

我收到試圖在MySQL中創建一些表與外鍵Mysql外鍵約束不正確嗎?

CREATE TABLE session (
code CHAR(2) NOT NULL, 
date DATE, 
room VARCHAR(30) NULL, 
CONSTRAINT session_pk PRIMARY KEY (date), 
CONSTRAINT session_fk FOREIGN KEY (code) 
    REFERENCES module(code)); 

CREATE TABLE module (
code CHAR(2) NOT NULL, 
name VARCHAR(30) NOT NULL, 
cost DECIMAL(8,2) NOT NULL, 
credits TINYINT NOT NULL, 
course_code CHAR(3) NOT NULL, 
CONSTRAINT module_pk PRIMARY KEY (code)); 

這裏的時候,錯誤是兩個表我想創建,語法我用火柴W3學校和兩種數據類型都是一樣的,所以我看不出這是不正確,任何幫助,將不勝感激謝謝:)

+0

您引用的表是尚未創建 – Mihai

+0

就先定義'module'表:http://www.sqlfiddle.com/# !9/e298a。 –

+0

啊!謝謝!我一開始就想到了,並試圖創建它,但沒有得到它正確寫下來,這已經奏效! :) –

回答

1

你試圖創建引用表之前創建表的外鍵。

轉乘查詢的順序將工作:

CREATE TABLE module (
`code` CHAR(2) NOT NULL, 
name VARCHAR(30) NOT NULL, 
cost DECIMAL(8,2) NOT NULL, 
credits TINYINT NOT NULL, 
course_code CHAR(3) NOT NULL, 
CONSTRAINT module_pk PRIMARY KEY (`code`)); 

CREATE TABLE `session` (
`code` CHAR(2) NOT NULL, 
`date` DATE, 
room VARCHAR(30) NULL, 
CONSTRAINT session_pk PRIMARY KEY (`date`), 
CONSTRAINT session_fk FOREIGN KEY (`code`) 
REFERENCES module(`code`)); 
0

試試這個

CREATE TABLE module (
code CHAR(2) NOT NULL, 
name VARCHAR(30) NOT NULL, 
cost DECIMAL(8,2) NOT NULL, 
credits TINYINT NOT NULL, 
course_code CHAR(3) NOT NULL, 
CONSTRAINT module_pk PRIMARY KEY (code)); 

CREATE TABLE session (
code CHAR(2) NOT NULL, 
date DATE, 
room VARCHAR(30) NULL, 
CONSTRAINT session_pk PRIMARY KEY (date), 
CONSTRAINT session_fk FOREIGN KEY (code) 
    REFERENCES module(code));