Database 关系“;sendmessage“消息”消息“id”顺序;不存在postgresql
我试图创建一个函数,但它提示我出错。这是我的结构Database 关系“;sendmessage“消息”消息“id”顺序;不存在postgresql,database,postgresql,relational-database,Database,Postgresql,Relational Database,我试图创建一个函数,但它提示我出错。这是我的结构 CREATE TABLE "SendMessage_messages" ( message_id serial NOT NULL, message_subject character varying(255), message_content text NOT NULL, message_type character varying(255) NOT NULL, message_category character varyi
CREATE TABLE "SendMessage_messages"
(
message_id serial NOT NULL,
message_subject character varying(255),
message_content text NOT NULL,
message_type character varying(255) NOT NULL,
message_category character varying(255) NOT NULL,
created_on timestamp with time zone NOT NULL,
created_by character varying(255),
updated_on timestamp with time zone NOT NULL,
updated_by character varying(255),
CONSTRAINT "SendMessage_messages_pkey" PRIMARY KEY (message_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE "SendMessage_messages"
OWNER TO gljsxdlvpgfvui;
这是顺序
CREATE SEQUENCE "SendMessage_messages_message_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
ALTER TABLE "SendMessage_messages_message_id_seq"
OWNER TO gljsxdlvpgfvui;
这是我创建的函数
CREATE FUNCTION fn_save_message2(IN msg_sub character varying, IN msg_cont text, IN msg_type character varying, IN msg_category character varying, IN msg_created_by character varying, IN msg_updated_by character varying) RETURNS integer AS
$BODY$ DECLARE msg_id integer := 0;
BEGIN
INSERT INTO "SendMessage_messages"(
message_subject, message_content, message_type, message_category,
created_on, created_by, updated_on, updated_by)
VALUES (msg_sub, msg_cont, msg_type, msg_category, LOCALTIMESTAMP,
msg_created_by, LOCALTIMESTAMP, msg_updated_by);
Select into msg_id currval('SendMessage_messages_message_id_seq');
return msg_id;
END;$BODY$
LANGUAGE plpgsql VOLATILE NOT LEAKPROOF
COST 100;
ALTER FUNCTION public.fn_save_message2(IN character varying, IN text, IN character varying, IN character varying, IN character varying, IN character varying)
OWNER TO gljsxdlvpgfvui;
当我运行此查询时
SELECT fn_save_message2('Test','fjaksdjflksadjflas','email','news','taqi.official@gmail.com','taqi.official@gmail.com');
它这样说,
ERROR: relation "sendmessage_messages_message_id_seq" does not exist
LINE 1: Select currval('SendMessage_messages_message_id_...
^
QUERY: Select currval('SendMessage_messages_message_id_seq')
CONTEXT: PL/pgSQL function fn_save_message2(character varying,text,character varying,character varying,character varying,character varying) line 8 at SQL statement
********** Error **********
ERROR: relation "sendmessage_messages_message_id_seq" does not exist
SQL state: 42P01
Context: PL/pgSQL function fn_save_message2(character varying,text,character varying,character varying,character varying,character varying) line 8 at SQL statement
我只需插入它插入的数据,当我运行从表中选择message_id时,它也会提示同样的错误。这种情况很好:currval()
期望regclass
作为它的参数,而不是text
(字符串)。regclass
中的标识符转义需要像其他地方一样进行(f.ex.regclass
也支持限定模式):
更多关于:
引用标识符也使其区分大小写,而未引用的名称总是折叠成小写。例如,PostgreSQL认为标识符FOO、FOO和“FOO”是相同的,但“FOO”和“FOO”彼此不同。(在PostgreSQL中,将不带引号的名称折叠为小写不符合SQL标准,该标准规定不带引号的名称应折叠为大写。因此,foo应等同于“foo”,而不是“foo”根据标准。如果您想编写便携式应用程序,建议您始终引用某个特定名称,或永远不要引用该名称
select into msg_id currval('"SendMessage_messages_message_id_seq"');
-- or:
select into msg_id currval('"myschema"."SendMessage_messages_message_id_seq"');