用delphi连接MySQL数据库,有个表只有一个字段(moduleId),需要在事务中先向该表添加一行,得到添加的moduleId用于修改其它表的值,问题是,我如果用sql语句去添加的话,由于主码是数据库自动生成的,添加了就不知道哪个moduleId是最后添加的了,而我用append方法去添加的话(我用的是adoquery控件),由于该表只有一个字段,死活添加不了,各位有没碰到过这个问题,解答一下,谢谢。

解决方案 »

  1.   

    樓主是否可以連繼發SQL語句呢?
    如:
    1、先取出最大的moduleId號
    2、然後再新增
    3、再取出最大的moduleId號實現時分兩步走:
    第一步:執行1,然後加1第二步:執行2、3,語句如下:
    Insert into [tablename](moduleId)values(moduleId + 1)
    select max(moduleId) from [tablename]--------------------------------
    如果我的說法對你有幫助,請您也幫我一個忙:
    詳情請見:
    http://community.csdn.net/Expert/topic/4598/4598070.xml?temp=.1748011
      

  2.   

    先谢谢duanhai(段海),祝福你幸福
    但Mysql数据库自动生成主码并不是找个最大值然后加1,如果有的行被删除造成主码不连续的情况,它会找到那个最小的间断点然后那个值当做主码插入数据库,所以你的方法不能使用
      

  3.   

    最好是moduleId你自己生成,让MYSQL生成的话不好控制.
      

  4.   

    自己生成主码的话怕违反唯一性约束而报错
    现在的考虑是在那个表再添加一个字段description,添加的时候用append方法