现在有A表,和B表,现在在后台添加信息到A表,在insert之前要把与当前信息的有关的有些东西写到写到B表(A表和B表的关系是1对多的)这样就需要当前信息的ID,这个在编辑信息是可以的,因为编辑信息能获取当前信息的ID,但是在添加信息的时候就不行了,
因为不知道当前表的ID,
想通过sql获取A表的最后一条信息ID,然后加1,这应该是当前信息的ID了,但是如果这时候别人也在操作这个数据表的话,就不行了啊。
SQL好像有触发器什么的,不知道怎么实现,请高手帮忙一下,谢谢。

解决方案 »

  1.   

    这个函数?
    mysql_insert_id($link_id);
      

  2.   

    这个是获取上一个insert的ID啊,现在的状况是我现在还没有插入信息,
      

  3.   

    mysql_insert_id($link_id);  不可靠
      

  4.   

    实在不行我有个办法
    可以在A表和B表建个字段id2
    这个ID2产生条件是当前时间戳+随机数据
    这样A表和B表不就有关联了吗
      

  5.   

    想通过sql获取A表的最后一条信息ID,然后加1,这应该是当前信息的ID了,但是如果这时候别人也在操作这个数据表的话,就不行了啊。
    =================================
    你说的“别人也在操作”已是另一个数据库连接,mysql_insert_id值和当前会话挂钩的,至少php手册和mysql手册都告诉你了。php:mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号
    mysql:
    The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.
      

  6.   


    呵呵,说的也是哈,但是现在线路和日期是同时间添加的,假如现在添加一条线路,步骤是:
    标题:***
    出发时间及价格:(这就是操作表B的,添加价格,门票等,OK后保存)
    内容:***
    提交
    按照目前流程,是先把儿子安定好,老子再干事。实在不行,在添加信息的时候提示一下:保存后再来信息这条信息。全这样用户体验效果差些。
      

  7.   

    就是说你在填写添加线路的表单的过程中通过其他的表单提交了价格,门票等
    是这样的吗?
    如果是,这个过程就有点类似购物车了(先选商品,后结账)
    所以你也可以套用商城代码你可以在 OK后 保存时产生唯一键,比如 sessionid、B 的last_insert_id等,作为 B 的键
    待主表单提交,生成了线路id后再修改过去
      

  8.   

    谢谢大家的回答,问题已经解决了,因为用的是CMS,表结构不好改
    我加卫个timeid=time()+rand(1000,9999)
    这个应该不会冲突吧,
    要是同一秒同有多个人同时加信息,并且产生的四个随机数据也一样,我马上就去买彩票。