如何在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);
相关文件:掺杂约束