2016-03-09 67 views
0

我試圖創建一個外鍵,但它顯示一個錯誤錯誤代碼1215:無法添加外鍵約束

「錯誤代碼1215:無法添加外鍵約束」

和我嘗試修復它,但它不起作用。

這是我的腳本:

drop database if exists `manage_Student`; 

create database if not exists `manage_Student` default character set utf8; 

use `manage_Student`; 

drop table if exists `students`; 

create table if not exists `students` (
    `id` smallint(8) not null, 
    `name` varchar(50) not null, 
    `id_pos` smallint (10) not null, 
    `address` varchar(50), 
    `gender` varchar(7) check (gender in ('male', 'female')), 
    primary key (`id`), 
    constraint fk_stupos foreign key (`id_pos`) references `position`  (`id_pos`) 

) engine = InnoDB default char set = utf8; 

drop table if exists `position`; 

create table if not exists `position` (
    `id_pos` smallint (10) not null, 
    `position` varchar (50), 
    primary key (`id_pos`) 
) engine = InnoDB default char set = utf8; 

回答

0

只需先創建position表。它必須存在,然後才能將其用於約束條件foreign key

Here是一個SQL小提琴。

另外值得注意的是:你有一個檢查約束條件爲gender。 MySQL接受check約束的語法。但是,它實際上並沒有做任何事情。這是爲了提高與其他數據庫的兼容性。

如果您確實想要檢查值,則需要使用性別(和另一個外鍵約束)或enum類型的參考表。

+0

omg,我很愚蠢。我剛剛學習SQL。感謝你 –

+0

檢查性別是這樣的: alter table'position'添加約束ck_gender檢查('性別'in('M','F','U')); –

相關問題