我有三张桌子;
masterCat
category
subCat
Master cat只有两列id
和name
后续表格有三列,id
,name
和mapsTo
显然,mapsTo
表中的category
列表示此类别属于哪个masterCat
,从而创建了分层类别结构
我正在尝试编写一个脚本,以便用户更新和修改其类别,包括添加新类别。
因此,如果创建了新结构:
newMasterCat > newCategory > newSubCategory
如果没有这么多代码行,我怎么能在MySQL中编写它,这就是它需要做的事情:
masterCat
和category
表修正的ID。 category
和subCat
中的新行我可以分三个阶段完成这项工作,但有更快的方法吗?
(在VB.net中使用MySQL数据库和MySQL驱动程序)
答案 0 :(得分:1)
您可以使用LAST_INSERT_ID()
功能完成此操作:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
此函数的结果范围限定为当前连接,不会受到其他并发插入的影响。所以你的插页看起来像:
INSERT INTO masterCat (name) VALUES ('masterCat1');
INSERT INTO category (name, mapsTo) VALUES ('Cat1', LAST_INSERT_ID());
最后你可以用同样的方式连接第三次:
INSERT INTO subCat (name, mapsTo) VALUES ('SubCat1', LAST_INSERT_ID());
有人可以评论如何在VB.NET中执行这些语句,但是你可能必须创建一个存储过程来在一次调用中执行单独的语句 - 即你可能无法只需将调用链接到ExecuteNonQuery()
。
顺便说一下,我会注意到 - 很多人都花了很多时间担心防止多次数据库往返,而这个数字级别不是他们应该关注的瓶颈。