【问题标题】:Stored procedure - Update Query存储过程 - 更新查询
【发布时间】:2012-03-09 11:27:55
【问题描述】:

我不熟悉 SQL 存储过程。

我有一张名为 customer 的表,它有一个名为 accountNo 的字段。我想用新的 accountNo 更新客户表,并且 accountNo 应该从 1000 递增。

我想更新表中的所有客户,并且 accountNo 将类似于 100,1001,1002.....

提前致谢, 尼米

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    这将更新表中的每个客户

    UPDATE Customer
    SET accountNumber = accountNumber+1000
    

    这是基于您说“客户表只有 1 个字段 - accountNumber”的事实。但是,我怀疑您的表实际上有一个代表 customerId 的键(如果没有,它应该!!!)

    在这种情况下,您可能想要更新某个特定客户的帐号

    UPDATE Customer
    SET accountNumber = accountNumber+1000
    WHERE customerId = 123
    

    【讨论】:

      【解决方案2】:

      Jamiec 提供的解决方案几乎是正确的,但如果 accountNumber 上有唯一键,则由于唯一键约束,他的第一次更新可能无法正常工作。考虑 accoutNumber = 1 和 accountNumber = 1001,如果 accountNumber = 1 的行将首先更新 MySQL 将引发错误 'duplicate key for row xxx'。

      您需要按顺序更新客户表

      UPDATE Customer
      SET accountNumber = accountNumber + 1000
      ORDER BY accountNumber DESC
      

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多