代码之家  ›  专栏  ›  技术社区  ›  Centurion

三合一mysql语句

  •  2
  • Centurion  · 技术社区  · 15 年前

    在一条SQL语句中,可以插入一条记录,然后获取autoincrement id,并为同一条记录更新一个特定列

    提前谢谢。

    6 回复  |  直到 15 年前
        1
  •  3
  •   Unreason    15 年前

    然而,

    • 如果表上有一个触发器将更新第二列,那么发出singleinsert将得到所需的结果,并且可能不需要更改应用程序中的任何内容

    • 最后,使用mysqli库,您可以自由地发出多个SQL语句,因此只需对数据库进行一次调用,这可能就足够了,具体取决于您如何定义“单语句”

    对于继承您的代码的人来说,上述任何一项在可维护性方面都无法与修复应用程序相提并论。

        2
  •  1
  •   halfdan    15 年前

    在单个查询中不可能同时执行UPDATE和INSERT。

        3
  •  1
  •   Michael Eakins    15 年前

    我发现了你可能感兴趣的艺术品:

    http://www.daniweb.com/forums/thread107837.html

    他们建议可以在一个查询中进行插入和更新。

    它们显示如下查询:

    INSERT INTO table (FIELD) VALUES (value) ON DUPLICATE KEY UPDATE FIELD=value
    

    虽然我相信这是可能的,但你最稳妥的办法可能是把这次行动分成三个阶段。

    INSERT INTO status set status_id = 5  ON DUPLICATE KEY UPDATE status_id=5;select last_insert_id()
    

    你应该能够把它转化为你的工作。

        4
  •  0
  •   Anil Soman    15 年前

    您可以编写一个接受max(id)并更新记录的AFTER INSERT触发器

        5
  •  0
  •   Tom H zenazn    15 年前

    您必须单独执行此操作,或者可以创建一个函数/存储过程来完成此任务。

        6
  •  0
  •   Tom H zenazn    15 年前

    多个语句可以用分号分隔,但我认为您需要使用PHP中的函数来获取自动增量值。最好使用存储过程。