2013-02-05 40 views
0
create table bankdb.customer(
    customer_name varchar(45) not null, 
    social_security int not null, 
    customer_street varchar(45), 
    customer_city varchar(45), 
primary key(`social_security`) 
)engine=InnoDB; 

create table bankdb.branch(
    branch_name varchar(45) not null, 
    branch_city varchar(45), 
    assets int, 
primary key (`branch_name`) 
)engine=InnoDB; 

create table bankdb.account(
    branch_name varchar(45), 
    account_number varchar(45) not null, 
    balance int, 
primary key (`account_number`), 
constraint fk_acount_branch 
    foreign key (`branch_name`) 
    references bankdb.branch(`branch_name`) 
)engine=InnoDB; 

create table bankdb.depositor(
    customer_name varchar(45) not null, 
    account_number varchar(45) not null, 
primary key (`customer_name`, `account_number`), 
constraint fk_depositor_customer 
    foreign key(`customer_name`) 
    references bankdb.customer(`customer_name`), 
constraint fk_depositor_account 
    foreign key(`account_number`) 
    references bankdb.account(`account_number`) 
)engine=InnoDB; 

這是我的sql代碼...我得到的錯誤無法爲表bankdb.depositor創建表...我的外鍵有什麼問題嗎?任何線索?錯誤1005(105)無法創建表...但爲什麼?

+0

我跑進興田同樣的問題。我知道如果你刪除引擎= InnoDB它的作品,但不是真正的根本原因 – smk

+0

我添加引擎= InnoDB後,試圖解決它的錯誤,但沒有發生任何事 –

回答

2

根據您的新腳本編輯,以下內容似乎在SQL小提琴中起作用。我不得不添加索引:

create table bankdb.customer(
    customer_name varchar(45) not null, 
    social_security int not null, 
    customer_street varchar(45), 
    customer_city varchar(45), 
    primary key(`social_security`), 
    INDEX (customer_name) 
)engine=InnoDB; 

create table bankdb.branch(
    branch_name varchar(45) not null, 
    branch_city varchar(45), 
    assets int, 
    primary key (`branch_name`) 
)engine=InnoDB; 

create table bankdb.account(
    branch_name varchar(45), 
    account_number varchar(45) not null, 
    balance int, 
    primary key (`account_number`), 
    INDEX (account_number), 
    constraint fk_acount_branch 
     foreign key (`branch_name`) 
     references bankdb.branch(`branch_name`) 
)engine=InnoDB; 

create table bankdb.depositor(
    customer_name varchar(45) not null, 
    account_number varchar(45) not null, 
    primary key (`customer_name`, `account_number`), 
    INDEX (customer_name), 
    INDEX (account_number), 
    constraint fk_depositor_customer 
     foreign key(`customer_name`) 
     references bankdb.customer(`customer_name`), 
    constraint fk_depositor_account 
     foreign key(`account_number`) 
     references bankdb.account(`account_number`) 
)engine=InnoDB; 

SQL Fiddle with Demo

如果這是你的完整劇本,你的問題是與創建表 account

您要創建上似乎不存在branch表的外鍵:

create table bankdb.account(
    branch_name varchar(45), 
    account_number varchar(45) not null, 
    balance int, 
primary key (`account_number`), 
constraint fk_acount_branch 
    foreign key (`branch_name`) 
    references bankdb.branch(`branch_name`) -- does this exist 
)engine=InnoDB; 

+0

對不起我的壞...從我的帖子刪除錯誤的表... 創建表bankdb.branch( \t branch_name VARCHAR(45)不爲空, \t branch_city VARCHAR(45), \t資產INT, 主鍵('branch_name') )發動機= InnoDB的; –

+0

@ GeorgeF-bot請使用正確的腳本編輯你的OP – Taryn

+0

只是修復了缺失的代碼 –

相關問題