在 MySQL 中添加外键约束会导致重建表吗?
我需要修改一个大表以添加外键。添加约束会导致重建表吗?引用的表已经存在,并且在该列上有索引。 ...
使用 MySQL 5.5。我有一张无法添加外键的表: ALTER TABLE `SOURCE_TABLE` ADD CONSTRAINT `ConstraintFK` FOREIGN KEY (`otherTableID`) REFERENCES `OTHER_TABLE` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; MySQL 返回以下错误: Error Code: 1005. Can't create table 'my_schema...
主要问题在于主题。 更详细地说:假设我们有一个表 T,它对表 U 有一个 FK 约束(为简单起见,对其 PK 有约束,并且两个表都在其 PK 上使用聚簇索引)。现在,我们在 T 中插入或更新一行,从而写入 FK 值。我的理解是 为 T 上插入/更改的行发出一个事务长度的 X 锁(以及上面的 IX 锁); 在 FK 值的 U 上发出一个事务长的 S 锁 - 这样其他任何事务都无法获取该键的 X 锁并更改它。 这是正确的吗?如果不是,FK 约束执行如何工作,以及它设置了哪些锁? 它可以解释我们的并行 ETL 系统上的死锁。 (我没有找到关于此问题的...
一个简单的表格: ID, NAME, POST_ID, GROUP_ID POST_ID 或 GROUP_ID 必须设置,但不能同时设置,也不能都不设置。因此, 有以下有效案例: ID, NAME, POST_ID, GROUP_ID x, y, 1, NULL x, y, NULL, 4 并且无效的情况: ID, NAME, POST_ID, GROUP_ID x, y, NULL, NULL x, y, 4, 4 这么复...
我继承了一个有 400 个表但只注册了 150 个外键约束的数据库。了解我对应用程序的操作并查看表列后,很容易看出应该还有更多。 如果我开始添加缺失的 FK,我担心当前的应用程序软件将会崩溃,因为开发人员可能已经开始依赖这种“自由”,但解决问题的第一步是列出缺失的 FK 列表,以便我们可以作为一个团队对它们进行评估。 更糟糕的是,引用列不共享命名约定。 这些关系被非正式地编码到数百个临时查询和存储过程中,所以我的希望是通过编程来解析这些文件,寻找实际表(但不是表变量等)之间的连接。 我预见到这种方法的挑战是:换行符,可选别名和表提示,别名解析。 ...
我即将从 mySQL INNODB 表中删除一个索引。已定义引用。当我尝试更改它时,它显示: #1025 - Error on rename of 'X/#sql-2a5f_219828' to 'X' (errno: 150) 这乍一看似乎合乎逻辑,因为存在关系,所以无法重命名。但即使我禁用外键检查: SET foreign_key_checks = 0; ALTER TABLE flyers DROP INDEX Index_5, ROW_FORMAT = DYNAMIC; 我也有同样的问题!我不想删除所有外键定义,删除该索引,然后重新定义它...
我有一张名为 abs 的表,其主键为 absId,这在几个我不知道的表中用作外键。有没有办法可以找到引用主键 absId 的那些表的名称?我使用 Oracle 10g 作为数据库。谢谢。 ...
为了在具有相同模式的表之间来回发送数据,我使用了管理工作室中的导入/导出任务。 问题在于 SQLServer 似乎会按照它认为合适的任何顺序执行导入/导出操作。这会导致需要按照特定级联顺序导入的 FK 约束表出现问题。 我知道我可以编写 SSIS 包来按照我喜欢的顺序执行这些操作,但有时导入/导出任务对于临时数据更改来说更容易。 有什么方法可以告诉 SQL Server 按照约束的正确顺序执行任务? 编辑:我知道我可以ALTER TABLE禁用和启用 FK...我想我只是想知道是否有一个设置可以让导入/导出任务自动对受约束的表执行此操作。 ...
删除其中任何一条记录都会报这样的错误: 错误 1451 (23000):无法删除或更新父行:外键约束失败 如何克服这个问题? ...
获得一组 MySQL 表的外键约束的可视化表示的最佳方法是什么?(除了手工绘制出来) 像这样: (来源:postgresonline.com) ...