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"');