首页 > 解决方案 > 雪花唯一列允许重复条目

问题描述

我有一个像这样的简单表:

    CREATE OR REPLACE TABLE ETL_LOG (
       NAME VARCHAR(1000) NOT NULL,
       SCHEMA_NAME VARCHAR(1000) NOT NULL,
       QUERY_TEXT VARCHAR(50000) NOT NULL,
       STATE VARCHAR(1000) NOT NULL,
       ERROR_CODE VARCHAR(1000) NULL,
       ERROR_MESSAGE VARCHAR(500000) NULL,
       SCHEDULED_TIME TIMESTAMP_LTZ(3) NOT NULL,
       NEXTS_SCHEDULED_TIME TIMESTAMP_LTZ(3) NULL,
       COMPLETED_TIME TIMESTAMP_LTZ(3) NOT NULL,
       RUN_ID VARCHAR(5000) NOT NULL,
       UNIQUE(RUN_ID)

     );

当我插入数据时,尽管运行它是独一无二的,但我得到了这样的东西。不知道为什么会这样。我在这里只显示了唯一值(RUN_ID)和完成时间。这是什么原因造成的?实际数据中不存在空格。

实际数据截图。

+-------------------------------+-------------------------+
|        COMPLETED_TIME         |         RUN_ID          |
+-------------------------------+-------------------------+
| 2020-04-30 01:05:30.034 -0700 |      1588233900020      |
| 2020-04-30 01:05:30.034 -0700 |       1588233900020     |
| 2020-04-30 01:06:17.659 -0700 |           1588233960000 |
| 2020-04-30 01:06:17.659 -0700 |           1588233960000 |
+-------------------------------+-------------------------+

标签: snowflake-cloud-data-platformuniqueidentifier

解决方案


我认为标题具有误导性。如果您使用的是 Snowflake(根据屏幕截图和您选择的标签),请注意 Snowflake 不强制执行主键:

Snowflake 支持定义和维护约束,但不强制执行它们,除了始终强制执行的 NOT NULL 约束。

https://docs.snowflake.com/en/sql-reference/constraints-overview.html#supported-constraint-types


推荐阅读