用触发器插入外键

时间:2015-06-05 15:20:48

标签: mysql triggers

我有一个包含两个表GENRESSONGS的数据库。在GENRES中,PRIMARY KEYGENRE_NAME。我想创建一个触发器,我可以在插入之前添加GENRES的主键。我尝试过的那个并不起作用。它让我得到错误1452

数据库,表格和触发器

CREATE DATABASE MUSIC_LIBRARY;
USE MUSIC_LIBRARY;

CREATE TABLE GENRES(GENRE_NAME VARCHAR(25),PRIMARY KEY(GENRE_NAME));

CREATE TABLE SONGS(NO INT AUTO_INCREMENT NOT NULL,GENRE VARCHAR(25),
                   TITLE VARCHAR(25), ARTIST VARCHAR(25), YOUTUBE_URL VARCHAR(50),
                   PRIMARY KEY(NO), FOREIGN KEY(GENRE) REFERENCES GENRES(GENRE_NAME));

DELIMITER $$
CREATE TRIGGER genre_foreign BEFORE INSERT ON SONGS
FOR EACH ROW
BEGIN
UPDATE GENRES
SET GENRE_NAME=NEW.GENRE;
END;
$$
DELIMITER ;

我试过的插页

INSERT INTO SONGS(GENRE,TITLE,ARTIST,YOUTUBE_URL)
VALUES("METAL","WAR PIGS","BLACK SABBATH","LINK");
  

错误代码:1452。无法添加或更新子行:外键   约束失败(music_librarysongs,CONSTRAINT songs_ibfk_1   外键(GENRE)参考genresGENRE_NAME))0.015秒

我没想到会出现这种错误。这就像我添加了更多的单词或其他内容,但它们都是VARCHAR(25)相同的变量类型。另外,我在没有触发器的情况下手动尝试了它,它有效,所以这就是为什么在我看来这个错误很奇怪。

0 个答案:

没有答案