如何在MySql中查看与表相关的外键?
背景:我想在 MySql 中删除一个具有外键约束的表。当我这样做时,我得到了这个:
Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails
如何删除与表相关的外键离开其他人。
我正在使用 Microsoft SQL Server 2008。我的问题是:如何在一个查询中删除多个具有公共前缀的表?
类似于那个表名:
LG_001_01_STLINE,
LG_001_02_STFICHE
Run Code Online (Sandbox Code Playgroud) 我有一张桌子,大约有。2 亿行(约 0.5 TB),我想删除它,但它需要很长时间。
它已经运行了2天了。我怀疑回滚功能是造成这种情况的原因。
有没有办法避免回滚功能,以便我可以加快这个过程?我只是想摆脱表格,因为那里的数据不再有价值。
我在 SQL Server 数据库中有一个包含 70 多万条记录的表,我删除了该表(一次性的事情)以释放磁盘空间,但看起来大小没有太大变化。我确实看到我可以将数据库缩小到最低限度。
这是这样做的方式吗?
上次我使用 SQL Server Management Studio 进行收缩时,花了几个小时才完成。有没有更快的方法?
什么是TRUNCATE
做不同的下降?
我相信它会删除表中的所有数据,但将表名保留在数据库中,而 asDROP
会删除所有数据和表。这样对吗 ?
我们的数据库是 SQL Server 2008 R2。我们有一些表有一些 varchar(500) 列,我想切换到 datetime2 或 bigint。我可以保证要切换的列中的所有数据对于正确的类型都是有效的。列更改确实会影响索引,但不会影响键。
在与同事讨论时,我们得出了两种解决问题的方法。这两个都将通过 T-Sql 脚本完成。
ALTER TABLE x ALTER COLUMN Y datetime2
,然后重建或重新创建索引。因为我相信数据会干净利落地转换,所以我倾向于#2。我的同事和 DBA 朋友更喜欢 #1,但我的同事不记得他们为什么这样训练他。DBA 朋友正在休假,所以我没有问他为什么。
有人可以提供有关他们认为更好的选择以及为什么的见解吗?最终这是我的决定,我想知道为什么 #1 比 #2 更受欢迎?
我对 psql 还是比较新的,当我决定尝试删除其他表由于外键关系而依赖的表时,我刚刚完成一项作业。我的期望是,任何对我要删除的表有外键引用的表都会(至少)删除它们的所有行并且该表也被删除。此情况并非如此。这些表仍然存在,即使我指定了CASCADE
,这些表的行也没有发生任何变化。
但是TRUNCATE ... CASCADE
,在引用的表上使用实际上会删除其他表中的行
编辑: 好的,我理解它这样做是因为这是文档指定的方式,但我现在的问题是,这是什么时候预期的行为?
为什么删除一个被其他表引用的表不会删除引用这个表的表是有意义的?方便吗?
我不小心在错误的表上执行了 DROP TABLE 语句。我有几天前的备份,可以用来恢复表和大部分数据,但不是全部。
我知道 SQL Server 无法回滚已经提交的事务,但我想知道是否有任何其他方法可以取回其余数据。任何帮助,例如一些不常见的 sql scrpts 或类似的东西,将不胜感激。
我们有一个大小为 2 TB 的 mysql 数据库,其中有 5 个从 110GB 到 350GB 的大表。当我们尝试删除这些表时,mysql 进入 defunct 模式并长时间挂在该状态。有没有办法在不挂 mysql 的情况下删除这些表。我们有一台机器,内存为 122GB,交换为 60GB。我们使用 InnoDB 引擎希望信息足以帮助我们解决这个问题
在 SQL Server 中,我使用以下代码删除带有约束的表:
IF OBJECT_ID('EMPLOYEES') IS NOT NULL
BEGIN
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMP_DEPT_FK
DROP TABLE EMPLOYEES;
END
Run Code Online (Sandbox Code Playgroud)
如何在 Mysql 中完成同样的事情?
drop-table ×10
mysql ×4
sql-server ×4
constraint ×2
foreign-key ×2
postgresql ×2
alter-table ×1
cascade ×1
innodb ×1
shrink ×1
t-sql ×1
truncate ×1