假设我在 mySQL 中有一个表业务。
每个“企业”中的 ID 是标题和位置的函数。它使编程变得更加容易。
我也经常合并 2 个相同的业务,等等。
说有一天公司的名称改变了,我想改变ID。我很少做的手术。
许多其他表格都指向该业务。
所以我该怎么做?
我是否应该创建新 ID,然后将指向原始业务的所有关系更改为新 ID?
是否有一个 mysql 命令可以更快地执行此操作?
任何示例 vb.net 代码?
根据每个表使用的数据库引擎及其设计,如果您在表上配置了外键和约束,您可能无需执行任何操作。
首先要做的是检查链接表的结构。为此,请show create table xyz
在 MySQL 会话中运行并检查:
(外键仅在使用 InnoDB 引擎时才有实际用途。您可以在其他引擎中请求它们,但它们不会做任何事情。)
如果你幸运地使用了 InnoDB 引擎并且有适当的约束,那么你正在寻找类似的东西:
CONTRAINT `FK_businessID` FOREIGN KEY(`businessID`) REFERENCES `Business` (`ID`)
ON DELETE CASCADE ON UPDATE CASCADE
在表定义中。如果您确实看到这样的内容,您应该能够安全地更改业务表中的 ID,并且所有其他链接表都应该效仿。
如果您没有外键但正在使用 InnoDB 引擎,请在单个事务中更改所有表中的信息,这样,如果出现任何问题,请执行您无法控制的更改(连接丢失、查询错误等)可以回滚。
最后,如果你没有使用 InnoDB 引擎,祝你好运。您将不得不冒着“即时”更改记录的风险。您的主要选择(按个人喜好排列)是:
显然,通过以上所有方法,在下定决心之前,请进行大量(我说的是大量)测试和备份。并且在使用数据库的客户数量最少的时候进行;换句话说,一夜之间。