アーティスト名とジャンルを外部キーとして含むテーブル ソングがありますが、これらはアーティスト テーブルとジャンル テーブルの主キーではありません。ロジックが間違っていない限り、曲のテーブルにデータを入力し、他の 2 つのテーブルに自動入力することを望んでいます。これが歌の表です。
CREATE TABLE IF NOT EXISTS `project`.`song` (
`idsong` INT(11) NOT NULL AUTO_INCREMENT ,
`artistname` VARCHAR(45) NULL DEFAULT NULL ,
`title` VARCHAR(45) NULL DEFAULT NULL ,
`genre` VARCHAR(15) NULL DEFAULT NULL ,
`year` INT(4) NULL DEFAULT NULL ,
`lyrics` TEXT NULL DEFAULT NULL ,
`url` VARCHAR(45) NULL DEFAULT NULL ,
PRIMARY KEY (`idsong`) ,
INDEX `title` (`title` ASC) ,
INDEX `genre_idx` (`genre` ASC) ,
INDEX `artistname_idx` (`artistname` ASC) ,
CONSTRAINT `genre`
FOREIGN KEY (`genre` )
REFERENCES `project`.`genres` (`genre` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `artistname`
FOREIGN KEY (`artistname` )
REFERENCES `project`.`artist` (`artistname` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
および他の 2 つのテーブル:
CREATE TABLE IF NOT EXISTS `project`.`genres` (
`genre` VARCHAR(15) NOT NULL ,
PRIMARY KEY (`genre`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `project`.`artist` (
`idartist` INT(11) NOT NULL AUTO_INCREMENT ,
`artistname` VARCHAR(45) NULL DEFAULT NULL ,
`bio` TEXT NULL DEFAULT NULL ,
PRIMARY KEY (`idartist`) ,
INDEX `artistname` (`artistname` ASC) )
ENGINE = InnoDB
これは機能していない私のクエリです:
INSERT INTO song (artist, title, genre, year, lyrics, url)
VALUES
('Jason Aldean', 'Night Train', 'Country', '2012', 'This is the song lyrics', '9ADpkg1dkDU');
何が問題なのですか?私は初心者なので、それはユーザーだと確信しています:)