28 lines
480 B
PL/PgSQL
28 lines
480 B
PL/PgSQL
CREATE FUNCTION posts_added_max()
|
|
RETURNS TRIGGER
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
INSERT INTO posts_added_max AS pam("user", service, added)
|
|
SELECT
|
|
"user",
|
|
service,
|
|
max(added) AS added
|
|
FROM
|
|
posts
|
|
WHERE
|
|
posts.service = NEW.service
|
|
AND posts."user" = NEW."user"
|
|
GROUP BY
|
|
"user",
|
|
service
|
|
ON CONFLICT(service,
|
|
"user")
|
|
DO UPDATE SET
|
|
added = EXCLUDED.added
|
|
WHERE
|
|
EXCLUDED.added > pam.added;
|
|
RETURN NULL;
|
|
END;
|
|
$$;
|