+CREATE OR REPLACE FUNCTION copierContainer (id_container todolist_container.id%TYPE) RETURNS INTEGER AS $copierContainer$
+DECLARE copy_id todolist_container.id%TYPE;
+
+BEGIN
+ INSERT INTO todolist_container (name, description, state) (
+ SELECT 'Copy of ' || name, description, 'draft'
+ FROM todolist_container
+ WHERE id = id_container
+ );
+
+ SELECT currval(pg_get_serial_sequence('todolist_container', 'id')) INTO copy_id;
+
+ INSERT INTO todolist_task (name, description, container_id, milestone, planned, manday, priority) (
+ SELECT name, description, copy_id, milestone, planned, manday, priority
+ FROM todolist_task
+ WHERE container_id = id_container
+ );
+
+ INSERT INTO todolist_container_topic_rel (container_id, topic_id) (
+ SELECT copy_id, topic_id
+ FROM todolist_container_topic_rel
+ WHERE container_id = id_container
+ );
+ RETURN copy_id;
+END;
+$copierContainer$ LANGUAGE plpgsql;
+
+-- Appel :
+-- SELECT copierContainer(3);
+