触发插入多个表
Posted
技术标签:
【中文标题】触发插入多个表【英文标题】:Trigger insert into multiple tables 【发布时间】:2015-03-10 08:55:44 【问题描述】:我有 2 个表名为:train_information 和 axle。
Train_information
有以下几点:
train_id (PK)
train_name
train_length
number_of_axles
axle
有以下几点:
axle_id (PK)
train_id(FK)
axle
当我在 train_information 上插入一些东西时,例如将数字 16 放入 number_of_axles 中。我希望桌子 axle 自动获取相同的信息。
如何用触发器做到这一点?
编辑:
现在可以使用以下代码:
CREATE TRIGGER TriggerName AFTER INSERT ON train_information
FOR EACH
ROW
BEGIN
INSERT INTO axle( train_id, axle )
VALUES (
NEW.train_id, NEW.number_of_axles
);
END
但现在,它在表格 axle 中输入例如数字 16 但我希望它像:
axle_id = 1
train_id = 1
axle = 1
axle_id = 2
train_id = 1
axle = 2
axle_id = 3
train_id = 1
axle = 3
这可能吗?
【问题讨论】:
【参考方案1】:您可以在Train_information
表上创建AFTER TRIGGER
,如下所示:
SQL 更多关于After Triggers in SQL
CREATE TRIGGER TriggerName
ON Train_information
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO axle
(train_id, axle)
SELECT
train_id, 'axle_name'
FROM inserted
END
MySQL 更多关于After Triggers in mysql
DELIMITER $$
CREATE TRIGGER TriggerName
AFTER INSERT ON Train_information FOR EACH ROW
BEGIN
INSERT INTO axle (train_id, axle)
VALUES (NEW.train_id, NEW.axle_name)
END;
$$
DELIMITER ;
【讨论】:
我收到以下错误:MySQL meldt: #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“ON train_information FOR INSERT AS BEGIN SET NOCOUNT ON”附近使用正确的语法我正在使用 phpmyadmin 那么你在使用 MySQL 吗? 是的,我点击:添加触发器。在那里我必须填写名称等和一个字段:定义。我在那里填写代码。 更新了我的答案它应该在MySQL
,检查它。还添加了文档以了解触发器。
它仍然给出语法错误,但我认为我做错了什么。我去看看文档!谢谢!以上是关于触发插入多个表的主要内容,如果未能解决你的问题,请参考以下文章