我有一个PostrgeSQL数据库,其中包含由大量行组成的表.我需要删除一些信息,为了加快速度,我们计划禁用对它的"FK约束"
总而言之,我的问题是; 如果我禁用单个表上的所有触发器,它们是也禁用从另一个表指向该表的"FK约束",还是应该单独禁用它们?
现在,我只需使用以下命令禁用所有触发器:
ALTER TABLE “table_name” DISABLE TRIGGER ALL
UPD:澄清了我关于FK的声明,我的意思是"FK约束"
我有一个PostrgeSQL数据库,其中包含由大量行组成的表.我需要删除一些信息,为了加快速度,我们计划禁用对它的"FK约束"
总而言之,我的问题是; 如果我禁用单个表上的所有触发器,它们是也禁用从另一个表指向该表的"FK约束",还是应该单独禁用它们?
现在,我只需使用以下命令禁用所有触发器:
ALTER TABLE “table_name” DISABLE TRIGGER ALL
UPD:澄清了我关于FK的声明,我的意思是"FK约束"
创建外键约束时,PostgreSQL定义四个系统触发器:
在参考表上,将有一个AFTER INSERT
触发器和一个AFTER UPDATE
触发器
在被引用的表上,将有一个AFTER UPDATE
触发器和一个AFTER DELETE
触发器
因此,如果禁用被引用表上的所有触发器,您将能够删除行或修改键列,即使这会 destruct 引用完整性.