LINUX.ORG.RU

Несколько вопросов по: Postgres, PLPgSQL


0

0

Привет всем

1. Правильно ли я возвращаю несколько значений, в виде RECORD

CREATE OR REPLACE FUNCTION get_curr_speeds(INT) RETURNS RECORD AS $$

нельзя как в Fb 

...
RETURNS 
(
  B INTEGER,
  A VARCHAR(100),
  C BLOB
)

?

2. Как вытащить последний RecordID (SERIAL)

        lpids RECORD;
BEGIN
        SELECT INTO lpids MAX(id) AS lid, MAX(id) - 1 AS pid FROM session_stats WHERE session_id = $1;

так правильно ?

3. Как лучше разницу между временем высчитать ? (что-то вроде: UNIXTIMESTAMP - UNIXTIMESTAMP) 

BEGIN
        SELECT INTO seconds TO_NUMBER(TO_CHAR((SELECT created FROM session_stats WHERE id = $1) - (SELECT created FROM session_stats WHERE id = $2), 'SSSS'), '99G999D9S');
        RETURN seconds;
END;

только так ?

Мне надо время между обновлениями получить.. 

4. Правильно так использовать наследование 

CREATE TABLE stats
(
        li_octets       INT DEFAULT 0,
        lo_octets       INT DEFAULT 0,
        wi_octets       INT DEFAULT 0,
        wo_octets       INT DEFAULT 0
);

CREATE TABLE sessions
(
        id              BIGSERIAL,
        username        VARCHAR(128) REFERENCES accounts(username),
        started         TIMESTAMP DEFAULT NOW(),
        ended           TIMESTAMP
) INHERITS (stats);

INSERT INTO sessions (username) VALUES ('halflife');

CREATE TABLE session_stats
(
        id              BIGSERIAL,
        session_id      BIGINT,
        created         TIMESTAMP DEFAULT NOW()
) INHERITS (stats);

?

Знаю, надо книжку какую нибудь почитать, но у меня щас денег нет на бумажный вариант а с экрана много вычитать мне трудно =( Потому прошу за скорее всего дурацкие вопросы сильно не пинать =)
anonymous

Вопрос закрыт, я уже сам разобрался ..

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.