Primary key 如何在表中创建主键

Primary key 如何在表中创建主键,primary-key,snowflake-cloud-data-platform,Primary Key,Snowflake Cloud Data Platform,如何在表中创建主键。我使用以下命令创建了一个,但该键似乎没有强制执行: ALTER TABLE tablename ADD PRIMARY KEY (column1,column3); Snowflake支持定义和维护约束,但不强制执行约束,除非始终强制执行非空约束 尽管主键在Snowflake中没有强制执行,但您可以使用MERGE语句插入数据以强制执行该键的唯一性。这种方法需要确保源数据集不包含重复项,例如使用QUALIFY函数 例如: CREATE TABLE IF NOT EXISTS

如何在表中创建主键。我使用以下命令创建了一个,但该键似乎没有强制执行:

ALTER TABLE tablename ADD PRIMARY KEY (column1,column3);

Snowflake支持定义和维护约束,但不强制执行约束,除非始终强制执行非空约束


尽管主键在Snowflake中没有强制执行,但您可以使用MERGE语句插入数据以强制执行该键的唯一性。这种方法需要确保源数据集不包含重复项,例如使用QUALIFY函数

例如:

CREATE TABLE IF NOT EXISTS test (
    col1 VARCHAR(50) NOT NULL,
    col2 VARCHAR(50),
    col3 VARCHAR(50) NOT NULL,
    constraint PK_test primary key (col1, col3) not enforced
);


MERGE INTO TEST AS tgt
USING (
    SELECT COL1, COL2, COL3 FROM (
        SELECT 'a' COL1, 'b' COL2, 'a' COL3
            UNION
        SELECT 'a' COL1, 'c' COL2, 'a' COL3
            UNION
        SELECT 'a' COL1, 'd' COL2, 'a' COL3)
    QUALIFY row_number() over (partition by COL1, COL3 order by COL2) = 1
)AS src
ON (tgt.COL1=src.COL1 AND tgt.COL3=src.COL3)
WHEN NOT MATCHED
THEN INSERT (COL1, COL2, COL3)
VALUES (src.COL1, src.COL2, src.COL3);

仅插入了行a、b、a

同意。也就是说没有免费的午餐,所以无论你想让db在后台免费做什么,你都必须在前台做。这对于大的东西也是很好的,因为一旦你付了风笛手的钱,你就不会有被多次支付的隐藏成本。但不利的一面是,你必须了解吹笛者,并付钱给他。。很好,我很喜欢。作为问题的后续,下面是我的问题