【问题标题】:Trying to create a stored procedure to insert data into postresql database - how to automatically enter primary key?尝试创建存储过程以将数据插入 postgresql 数据库 - 如何自动输入主键?
【发布时间】:2021-07-05 12:35:37
【问题描述】:

我正在尝试创建一个存储过程来将数据插入到 PostgreSQL 13 数据库的表中。如何自动输入主键?

这是我制作桌子的方法

CREATE TABLE public.testing_serial
(
    id integer NOT NULL DEFAULT nextval('testing_serial_id_seq'::regclass),
    name character varying COLLATE pg_catalog."default",
    age integer,
    CONSTRAINT testing_serial_pkey PRIMARY KEY (id)
)

这是我对存储过程的尝试并调用它

CREATE OR REPLACE PROCEDURE test_input("name" character varying,
                                        "age" integer)
LANGUAGE SQL
AS $$
INSERT INTO testing_serial VALUES ("name","age");
$$;

CALL test_input('Cheese',2000);

我收到以下错误并推测 SQL 期望输入“id”列。那是对的吗?输入时如何自动生成ID?

错误:列“id”是整数类型,但表达式是字符变化类型

第 5 行:INSERT INTO testing_serial VALUES ("name","age"); ^ 提示:您将需要重写或强制转换表达式。 SQL 状态:42804 字符:145

【问题讨论】:

    标签: postgresql stored-procedures


    【解决方案1】:

    您需要使用 INSERT 语句指定列列表:

    INSERT INTO testing_serial (name, age) VALUES ("name","age");
    

    【讨论】:

    • 就是这样,谢谢 - 我还需要在通话中在“奶酪”周围使用单括号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2019-03-14
    • 2012-03-18
    • 1970-01-01
    • 2016-01-26
    相关资源
    最近更新 更多