我的数据库中有两个表(parent& child)。如何将新记录插入父表中,以便将记录自动插入子表?
答案 0 :(得分:1)
您可以使用(插入后)触发器,请参阅MySQL manual了解语法。
答案 1 :(得分:0)
以下是使用触发器插入刚生成的父自动增量ID的新子记录的示例。
mysql> create table ParentTable (id int auto_increment primary key);
mysql> create table ChildTable (id int auto_increment primary key,
parentId int, foreign key (parentId) references ParentTable(id));
mysql> CREATE TRIGGER MyTrigger AFTER INSERT ON ParentTable
-> FOR EACH ROW
-> INSERT INTO ChildTable (parentId) VALUES (NEW.id);
mysql> insert into ParentTable () values ();
Query OK, 1 row affected (0.02 sec)
mysql> select * from ChildTable;
+----+----------+
| id | parentId |
+----+----------+
| 1 | 1 |
+----+----------+
这是一个简单的例子,因为除了主键和外键之外,这两个表没有任何其他列。
但是如果你想将其他列插入子表呢?
触发器只能访问刚刚插入父级的行的NEW.*
列。它还可以SELECT
来自数据库中其他地方的其他现有数据。或者它可以使用硬编码的文字值。
子表中的其他列可能还有默认值,否则它们可能暂时为NULL,直到您可以使用后续UPDATE语句填充它们。
您必须接受触发器在插入子表时可能无法为相关列提供特定值。