【发布时间】:2012-03-09 11:27:55
【问题描述】:
我不熟悉 SQL 存储过程。
我有一张名为 customer 的表,它有一个名为 accountNo 的字段。我想用新的 accountNo 更新客户表,并且 accountNo 应该从 1000 递增。
我想更新表中的所有客户,并且 accountNo 将类似于 100,1001,1002.....
提前致谢, 尼米
【问题讨论】:
我不熟悉 SQL 存储过程。
我有一张名为 customer 的表,它有一个名为 accountNo 的字段。我想用新的 accountNo 更新客户表,并且 accountNo 应该从 1000 递增。
我想更新表中的所有客户,并且 accountNo 将类似于 100,1001,1002.....
提前致谢, 尼米
【问题讨论】:
这将更新表中的每个客户
UPDATE Customer
SET accountNumber = accountNumber+1000
这是基于您说“客户表只有 1 个字段 - accountNumber”的事实。但是,我怀疑您的表实际上有一个代表 customerId 的键(如果没有,它应该!!!)
在这种情况下,您可能想要更新某个特定客户的帐号
UPDATE Customer
SET accountNumber = accountNumber+1000
WHERE customerId = 123
【讨论】:
Jamiec 提供的解决方案几乎是正确的,但如果 accountNumber 上有唯一键,则由于唯一键约束,他的第一次更新可能无法正常工作。考虑 accoutNumber = 1 和 accountNumber = 1001,如果 accountNumber = 1 的行将首先更新 MySQL 将引发错误 'duplicate key for row xxx'。
您需要按顺序更新客户表
UPDATE Customer
SET accountNumber = accountNumber + 1000
ORDER BY accountNumber DESC
【讨论】: