Mysql 在插入子表时将值插入父表的触发器
我有两张结构如下的桌子。当我试图添加到books表时,我得到一个错误,我无法添加或更新我期望的子行。我希望可以创建一个触发器,在添加到books表之前将publisher名称添加到publisher表中 这是我第一次使用触发器,我不确定我做错了什么,也找不到一个例子Mysql 在插入子表时将值插入父表的触发器,mysql,triggers,mysql-error-1452,Mysql,Triggers,Mysql Error 1452,我有两张结构如下的桌子。当我试图添加到books表时,我得到一个错误,我无法添加或更新我期望的子行。我希望可以创建一个触发器,在添加到books表之前将publisher名称添加到publisher表中 这是我第一次使用触发器,我不确定我做错了什么,也找不到一个例子 create table publishers (name varchar(25) not null, address varchar(55), phone varchar(12), PRIMAR
create table publishers
(name varchar(25) not null,
address varchar(55),
phone varchar(12),
PRIMARY KEY(name)
) ENGINE = INNODB;
create table books
(book_id int(4) not null auto_increment,
title varchar(40),
publisher_name varchar(25),
primary key (book_id),
foreign key (publisher_name) references publishers(name) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB;
我试图创造的触发器:
DELIMITER ///
CREATE TRIGGER add_publisher BEFORE insert ON books
FOR EACH ROW
BEGIN
INSERT INTO publishers(name) values (books.pubisher_name);
END;
///
DELIMITER ;
替换新的.publisher\u name的图书.publisher\u name
DELIMITER ///
CREATE TRIGGER add_publisher BEFORE insert ON books
FOR EACH ROW
BEGIN
INSERT INTO publishers(name) values (NEW.publisher_name);
END;
///
DELIMITER ;
存储过程是一个更好的选择,我想…问题,你的mysql版本是什么?@Blag我相信我使用的是5.1。试试Jiri给你的,如果仍然失败,那么你可能是在5.7上修补了一个关于在触发器之前检查约束的bug(但此修补程序可能仅适用于
notnull
Constraint,我不知道是否适用于FK…)谢谢。我以为我已经尝试过了。我一定是拼写错了什么。