在Snowflake中删除表上的所有外键约束



如何在snowflake中删除表上的所有外键约束。像这样的

ALTER TABLE TABLE_NAME DROP ALL FOREIGN KEY

我在雪花文档中找不到任何脚本。有一个像这样的单一外键约束丢弃脚本

ALTER TABLE TABLE_NAME DROP FOREIGN KEY(COLUMN_NAME)

这在单个SQL语句中是不可能的。Snowflake只是保证";删除具有外键引用的唯一/主键将删除所有引用的外键以及唯一/主键";

请参见此处:https://docs.snowflake.com/en/sql-reference/constraints-drop.html

删除更多约束的一种解决方案可能是创建一个存储过程,该过程在所有约束上循环并删除它们。

有关创建存储过程的详细信息:https://docs.snowflake.com/en/sql-reference/stored-procedures.html

从中获取所有约束的信息架构视图:https://docs.snowflake.com/en/sql-reference/info-schema/table_constraints.html

结构应如下所示:

ALTER TABLE "RETAIL_POC"."SALES"."STORE_LOOKUP" ADD CONSTRAINT "store_pk" PRIMARY KEY (STORE_ID);
ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" ADD CONSTRAINT "store_fk" FOREIGN KEY (STORE_ID) REFERENCES "RETAIL_POC"."SALES"."STORE_LOOKUP" (STORE_ID);
ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" DROP CONSTRAINT "store_fk";

您也可以删除基于多列的约束:

ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" DROP FOREIGN KEY (store_id);

相关文件:掺杂约束

相关内容

  • 没有找到相关文章

最新更新