将lastlogin保存在表中

时间:2018-11-13 12:41:51

标签: postgresql function time

我的数据库中有下表,其中包含以下代码:

CREATE TABLE public.users(

owner character varying(32) COLLATE pg_catalog."default" NOT NULL,
password character varying(16) COLLATE pg_catalog."default" NOT NULL,
createdate timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
lastlogin timestamp without time zone,
CONSTRAINT users_pkey PRIMARY KEY (owner) );

以下问题,是否可以编写一个函数/存储过程,该函数/存储过程自动保存和更新所有者的上次登录信息以及该表的lastlogin值?

1 个答案:

答案 0 :(得分:0)

PostgreSQL doesn't support stored procedures本身,但是您可以使用函数获得相同的结果。例如:

CREATE FUNCTION MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
  RETURNS void AS
  $BODY$
      BEGIN
        INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
        VALUES(_sno, _eid, _sd, _ed, _sid, _status);
      END;
  $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

然后可以这样称呼它:

select * from MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );

与真正的存储过程相比,Pg的存储函数的主要限制是:

  1. 无法返回多个结果集
  2. 不支持自主交易(函数中的BEGIN,COMMIT和ROLLBACK)
  3. 尽管ODBC和JDBC驱动程序将为您转换调用,但不支持SQL标准的CALL语法。

Example