2016-04-14 79 views
1

時加入Foreign Keys到系統時,我得到一個錯誤,該錯誤說Cannot add foreign key constraint和我的代碼是:錯誤1215在MySQL中添加外鍵

DROP TABLE IF EXISTS Formed; 
DROP TABLE IF EXISTS Album; 
DROP TABLE IF EXISTS Band; 
DROP TABLE IF EXISTS Customers; 
DROP TABLE IF EXISTS Track; 

CREATE TABLE Formed(
    FormedID int NOT NULL, 
    YearFormed int, 
    CountryFormed varchar(50), 
    CityFormed varchar(50), 
    BandMembers varchar(400), 
    PRIMARY KEY(FormedID)) 
    ENGINE=InnoDB; 

CREATE TABLE Track (
    TrackID int NOT NULL, 
    AlbumID int NOT NULL, 
    Songs varchar (100), 
    TrackNumber varchar (20), 
    Title varchar (30), 
    TrackDuration varchar (4), 
    PRIMARY KEY (TrackID)) 
    ENGINE=InnoDB; 

CREATE TABLE Album(
    AlbumID int NOT NULL, 
    TrackID int NOT NULL, 
    BandID int NOT NULL, 
    KEY(TrackID), 
    KEY(BandID), 
    Price varchar(5), 
    PublicationDate varchar(11), 
    Title varchar(30), 
    Genre varchar (36), 
    PRIMARY KEY(AlbumID)) 
    ENGINE=InnoDB; 

CREATE TABLE Band(
    BandID int NOT NULL, 
    AlbumID int NOT NULL, 
    KEY(AlbumID), 
    RecordLabel varchar(50), 
    PRIMARY KEY(BandID)) 
    ENGINE=InnoDB; 

CREATE TABLE Customers (
    CustomerID int NOT NULL, 
    CName varchar (20), 
    CPhone int (11), 
    CEmail varchar (50), 
    CPPaid varchar (50), 
    CPDate date, 
    PRIMARY KEY (CustomerID)) 
    ENGINE=InnoDB; 

ALTER TABLE Track 
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Album 
ADD FOREIGN KEY (TrackID) REFERENCES Track(TrackID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Album 
ADD FOREIGN KEY (BandID) REFERENCES Band(BandID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Band 
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE; 

我是新加入Foreign KeysMySQL,我不明白我是如何得到這個錯誤。當它遇到線ALTER TABLE Track ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE;時我收到錯誤,我相信它會爲它後面的行創建相同的錯誤。

回答

2

您不能爲非空字段提供ON DELETE SET NULL

+0

謝謝!它現在工作:) – smitthy

相關問題