在 Postgres 中手动插入 UUID 值的语法

Jon*_*h P 8 postgresql syntax uuid syntax-error

我有一个这样创建的表:

CREATE TABLE IF NOT EXISTS DIM_Jour (
    jour_id uuid NOT NULL,
    AAAA int,
    MM int,
    JJ int,
    Jour_Semaine int,
    Num_Semaine int,

    PRIMARY KEY (jour_id)
);
Run Code Online (Sandbox Code Playgroud)

我正在尝试手动插入一些值以进行测试。我知道最终我需要使用 UUID 生成器。

INSERT INTO DIM_Jour (jour_id, AAAA, MM, JJ, Jour_Semaine, Num_Semaine) VALUES (
    292a485f-a56a-4938-8f1a-bbbbbbbbbbb1,
    2020,
    11,
    19,
    4,
    47
);
Run Code Online (Sandbox Code Playgroud)

我收到此错误(或类似错误)

ERROR:  syntax error at or near "a485f"
 LINE 3:  292a485f-a56a-4938-8f1a-bbbbbbbbbbb1,
             ^
Run Code Online (Sandbox Code Playgroud)

我已经尝试过Postgres 文档中提到的不同格式,但似乎它不排除任何格式。这是一个愚蠢的语法问题还是我在这里遗漏了一些东西?正确的语法是什么?

Mur*_*nik 11

您可以将其作为字符串文字传递,并让数据库将其隐式转换为 UUID:

INSERT INTO DIM_Jour (jour_id, AAAA, MM, JJ, Jour_Semaine, Num_Semaine) VALUES (
    '292a485f-a56a-4938-8f1a-bbbbbbbbbbb1',
    2020,
    11,
    19,
    4,
    47
);
Run Code Online (Sandbox Code Playgroud)

但明确说明并亲自执行演员阵容可能是一个很好的做法

INSERT INTO DIM_Jour (jour_id, AAAA, MM, JJ, Jour_Semaine, Num_Semaine) VALUES (
    '292a485f-a56a-4938-8f1a-bbbbbbbbbbb1'::UUID,
    2020,
    11,
    19,
    4,
    47
);
Run Code Online (Sandbox Code Playgroud)