【问题标题】:Drop all foreign key constrain on a table in Snowflake删除 Snowflake 中表上的所有外键约束
【发布时间】:2020-11-17 11:24:13
【问题描述】:

如何删除雪花表上的所有外键约束。像这样的

ALTER TABLE TABLE_NAME DROP ALL FOREIGN KEY

我没有在雪花文档中找到任何脚本。有这样的单个外键约束删除脚本

ALTER TABLE TABLE_NAME DROP FOREIGN KEY(COLUMN_NAME)

【问题讨论】:

    标签: foreign-keys constraints snowflake-cloud-data-platform


    【解决方案1】:

    这在单个 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

    【讨论】:

      【解决方案2】:

      结构应该如下:

      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);
      

      相关文档: Dopping Constraints

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多