我想知道一个SQL查询,它会逐步更新所有表上的匹配列,无论我是否设置了第一个值。
Table A
`ACCOUNT_NO` = 10090
`ACCOUNT_NO` = 10091
Table B
`ACCOUNT_NO` = 10090
`ACCOUNT_NO` = 10091
Table C
`ACCOUNT_NO` = 10090
`ACCOUNT_NO` = 10091
改为---
Table A
`ACCOUNT_NO` = 12090
`ACCOUNT_NO` = 12091
Table B
`ACCOUNT_NO` = 12090
`ACCOUNT_NO` = 12091
Table C
`ACCOUNT_NO` = 12090
`ACCOUNT_NO` = 12091
答案 0 :(得分:1)
如果您的ID由声明为on update cascade
的外键连接(请参阅文档here),那么您可以更新主表中的值,它们将传播到其他表:
update a
set account_no = account_no + 2000;
如果新数字与旧数字冲突,反过来可能会产生错误。如果它发生,有很多方法。
解释说,这样的操作高度可疑。可能有一些非常罕见的例子,这是必要的,但一般来说,不应修改主键。如果正在修改列,则它是实体的属性,而不是实体的标识符。