当值在父表中插入时,自动在子表中生成id

本文关键字:id 插入 | 更新日期: 2023-09-27 18:05:34

我有两个表,即父表和子表。现在我向父表插入一个值,并使用自动递增id。代码是这样的:

string query2 = "INSERT INTO printer_info(printer_ip) VALUES(@ipAddress)";
MySqlCommand cmd1 = new MySqlCommand(query2, connection);
cmd1.Parameters.AddWithValue("@ipAddress", pAddress);
cmd1.ExecuteNonQuery();

现在我的问题是,当值插入到父表。如果我想让子表中的id自动生成,该怎么做?请建议。

   ID | printer_ip               printer_id | page_count
   ---------------    ------>    -----------------------
    1 | 10.0.0.0                            |
   PRIMARY KEY ID                FOREIGN KEY printer_id

当值在父表中插入时,自动在子表中生成id

如果您想在child中也插入一行,就在父行创建之后,那么您可以在下一个插入语句中使用last_insert_id()

:

string query2 = "INSERT INTO printer_info(printer_ip) VALUES(@ipAddress)";
MySqlCommand cmd1 = new MySqlCommand(query2, connection);
cmd1.Parameters.AddWithValue("@ipAddress", pAddress);
cmd1.ExecuteNonQuery();
string query_for_child_row = "INSERT INTO printer_queue(printer_id, page_count) 
                              VALUES( LAST_INSERT_ID(), @page_count )";
MySqlCommand cmd2 = new MySqlCommand( query_for_child_row, connection );
cmd2.Parameters.AddWithValue( "@page_count", page_count );
cmd2.ExecuteNonQuery();

可以使用插入触发器在父表中出现新行时在子表中添加新行。

编辑

提示:这两个操作应该在单个事务中执行,以避免其中一个失败时不一致。