使用自动增量插入相关MySQL数据
我在看一个数据库,它有3个表,我必须在其中插入数据:使用自动增量插入相关MySQL数据,mysql,Mysql,我在看一个数据库,它有3个表,我必须在其中插入数据: resource id (AUTO_INCREMENT) name resource_item id (AUTO_INCREMENT) name resource_id (FK ref resource.id) resource_item_business_function id (AUTO_INCREMENT) business_function_name resource_item_id 我所面临的是
resource
id (AUTO_INCREMENT)
name
resource_item
id (AUTO_INCREMENT)
name
resource_id (FK ref resource.id)
resource_item_business_function
id (AUTO_INCREMENT)
business_function_name
resource_item_id
我所面临的是这样一个事实:这必须是脚本化的。我只插入了1条resource
记录,这样我就可以很容易地将插入脚本编写到resource
表中。我有~20个resource\u项
记录要为该资源
插入,我甚至可以使用LAST\u insert\u ID()
函数轻松地完成这项工作。问题是…我如何插入资源\项目\业务\功能
我不知道如何将正确的
资源项目\u id
插入每个资源项目\u业务\u功能
记录。如果您有任何想法,我们将不胜感激。您需要在每次插入资源项后使用最后一个插入ID()。因此,您的最终脚本可以如下所示:
SET AUTOCOMMIT=0;
SET @RESOURCE_ID=0;
INSERT INTO resource ( NULL, "Some Name");
SELECT LAST_INSERT_ID() INTO @RESOURCE_ID;
INSERT INTO resource_item ( NULL, "Some Name", RESOURCE_ID );
INSERT INTO resource_item_business_function ( NULL, "Some Name", LAST_INSERT_ID() );
...etc...
INSERT INTO resource_item ( NULL, "Some Name", RESOURCE_ID );
INSERT INTO resource_item_business_function ( NULL, "Some Name", LAST_INSERT_ID() );
COMMIT;
啊。我希望有一些聪明的脚本/循环可以避免单独的SQL语句。另一方面,没有FK的级联,所以我希望我可以编写脚本,在多次执行时自动删除现有记录。为了清楚起见,我省略了最后一部分。:-)然后在脚本完成执行后删除这些过程,我猜?我绝对不希望这种过程停留在数据库上。如果它不是一个正在进行的操作,我不会使用数据库端SP或触发器。是的。理论上,这是一次性操作。多次执行代表了测试过程中的反复试验。回顾一下您的第一个响应。使用上面的插入将生成错误。只需替换
COMMIT代码>使用回滚代码>这将测试事务中的插入,并在完成前还原。所有完整性检查都在事务中完成,因此这不应影响您的测试。