我有以下问题填充另一个表中的两个表:使用触发器
我现在有3个表:
Person(personID, firstName, lastName, ...)
Household(householdID, personID, sons, daughters, ...)
Info(infoID, firstName, lastName, sons, daughters, ...)
的信息表,其中所有的数据,目前,虽然人和家庭是空的,我想通过将个人数据放入个人表中,并将他们的家庭数据放入家庭表中来分发数据。 Household.personID是Person.personID的外键。
我试图通过在家庭中每次插入一行来做到这一点,并且在每行之后,我会将人员数据插入到人员表格中(这将为该人员分配一个唯一的personID),然后返回并插入将新的personID添加到家庭表中。
环顾四周后,我发现我应该使用事务或通过创建触发器(或两者?)。我不知道很多关于要么但是这是我从我读创建:
CREATE TRIGGER PersonTrigger AFTER INSERT ON Person
FOR EACH ROW BEGIN
INSERT INTO Household
(personID, sons, daughters, ...")
VALUES (LAST_UPDATE_ID(), (SELECT sons, daughters, ...
FROM Info)
END;
INSERT INTO Person (firstName, lastName, ...)"
SELECT firstName, lastName, ...
FROM Info
但尝试运行这个时候我收到的SQLException错误
SQLException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EACH ROW BEGIN INSERT INTO TestHousehold(personID, givenName, lastName' at line 1
任何有识之士来为什么这可能会发生,将不胜感激。提前致谢。
你能发布整个触发代码吗? – 2015-02-24 01:29:56
'我试图通过每次插入一行来做到这一点'你将数据插入到houhold表中......所以,在触发前使用并且触发它,否则家庭将数据插入到人表中get * * maxid **然后将其插入家用餐桌。 – 2015-02-24 02:28:42
@MatteoRubini在阅读之前和之后,我从来没有使用触发器,我发现我需要在触发器代码后面设置一个'DELIMITER'并且有一个'END'。这是你发布我的整个触发器代码的意思,还是有更多我失踪? – mkk 2015-02-24 07:32:39