于是我开始写一个论坛,因为我想学习一点SQL(MySQL)。ID处理/插入多个表。 (基础论坛)
所以,首先我有一个帖子表,并有post_id
和topic_id
列。
但是,在另一边我有一个主题表。 在主题表我也有last_post_id
和topic_id
!
所以他们互相参考。
所以问题是:当用户创建一个话题(同时写第一篇文章)时,如何INSERT这些id有效?
因为现在我要做以下步骤:
插入话题相关的数据(主题title..etc,插入last_post_id = 0,因为我不知道这里这个值),然后检索topic_id
插入后的数据(文本,用户名..,topic_id),并retieve这个特殊的POST_ID
- 更新主题表,检索到的post_id(设置为
last_post_id
)。
它不是太长,乏味,无效..?
谢谢你的时间。我的英语不是最好的.. sry。
你可以使用单个事务来完成,但基本的想法是一样的。您需要在拥有topic_id之前插入新主题,并且您需要在拥有last_post_id之前插入新帖子。用你目前的表格,这是没有办法的。 *编辑添加:你也可以使用['TRIGGER'](http://dev.mysql.com/doc/refman/5。6/en/triggers.html),当新记录被添加到'posts'时,它会自动更新'last_post_id'字段。这并不会改变执行的查询数量,但它将由MySQL本身透明地处理。 – MartinodF 2012-02-26 23:32:03
@MartinodF:你想把它作为答案吗?当你发表评论时,我正在写几乎相同的东西(即使是触发器!)。 – 2012-02-26 23:36:41
@ muistooshort我已经发布它作为一个答案,也许晚了一点:)也许你关于使用NULL的观点也是一个好主意! – MartinodF 2012-02-26 23:40:19