· 8 years ago · Jun 17, 2018, 02:40 AM
1CREATE FUNCTION create_manifestation(work_id_in integer, title_in
2 text, created_at_in date, published_at_in date, OUT new_entity_id integer)
3 AS $$
4BEGIN
5 -- CHECK IF WORK EXISTS
6 PERFORM * FROM work WHERE "entity_id" = work_id_in;
7 IF NOT FOUND THEN
8 RAISE EXCEPTION 'Could not find work with entity_id %', work_id_in;
9 END IF;
10
11 -- INSERT INTO entity table
12 INSERT INTO entity (created_at, published_at, modified_at, title) VALUES (created_at_in, published_at_in, created_at_in, title_in);
13
14 -- Find the entity_id of the last insert
15 new_entity_id := currval(pg_get_serial_sequence('entity','id'));
16
17 -- INSERT INTO manifestation
18 INSERT INTO manifestation VALUES(new_entity_id, work_id_in);
19END;
20$$ LANGUAGE plpgsql;
21
22
23---------
24
25CREATE FUNCTION create_work(title_in text, created_at_in date, published_at_in date, OUT new_work_id integer) RETURNS integer AS $$
26BEGIN
27
28 INSERT INTO entity (created_at, published_at, modified_at, title) VALUES (created_at_in, published_at_in, created_at_in, title_in);
29
30 new_work_id := currval(pg_get_serial_sequence('entity','id'));
31
32 INSERT INTO work VALUES(new_work_id);
33
34END;
35$$ LANGUAGE plpgsql;