存储过程 - 更新查询

时间:2012-03-09 11:27:56

标签: mysql stored-procedures

我不熟悉SQL存储过程。

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

我想更新表中的所有客户,而accountNo将会像100,1001,1002 .....

提前致谢, Nimmy

2 个答案:

答案 0 :(得分:2)

这将更新表中的每个客户

UPDATE Customer
SET accountNumber = accountNumber+1000

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

在这种情况下,您可能希望更新一个特定客户的帐号

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

答案 1 :(得分:0)

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

您需要按顺序更新Customer表

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