Index: .idea/sqldialects.xml
===================================================================
--- .idea/sqldialects.xml	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
+++ .idea/sqldialects.xml	(revision 2061961352f193fd60d2c6841e8c4bea380d1b47)
@@ -6,4 +6,5 @@
     <file url="file://$PROJECT_DIR$/music/normalization/personal_info.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/procedures/insert_track_with_price.sql" dialect="PostgreSQL" />
+    <file url="file://$PROJECT_DIR$/music/transactions/add_tracks_to_playlist.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/transactions/create_invoice_with_lines.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/triggers/customer_deletion.sql" dialect="PostgreSQL" />
Index: music/constrains/general_constrains.sql
===================================================================
--- music/constrains/general_constrains.sql	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
+++ music/constrains/general_constrains.sql	(revision 2061961352f193fd60d2c6841e8c4bea380d1b47)
@@ -14,4 +14,21 @@
 SELECT setval(pg_get_serial_sequence('invoice_line', 'invoice_line_id'), (SELECT MAX(invoice_line_id) FROM invoice_line));
 
+SELECT setval(pg_get_serial_sequence('playlist_track', 'id'), (SELECT MAX(id) FROM playlist_track));
+
+SELECT setval(pg_get_serial_sequence('playlist', 'playlist_id'), (SELECT MAX(playlist_id) FROM playlist));
+
+SELECT setval(pg_get_serial_sequence('artist', 'artist_id'), (SELECT MAX(artist_id) FROM artist));
+
+SELECT setval(pg_get_serial_sequence('album', 'album_id'), (SELECT MAX(album_id) FROM album));
+
+SELECT setval(pg_get_serial_sequence('track', 'track_id'), (SELECT MAX(track_id) FROM track));
+
+SELECT setval(pg_get_serial_sequence('media_type', 'media_type_id'), (SELECT MAX(media_type_id) FROM media_type));
+
+SELECT setval(pg_get_serial_sequence('genre', 'genre_id'), (SELECT MAX(genre_id) FROM genre));
+
+SELECT setval(pg_get_serial_sequence('customer', 'customer_id'), (SELECT MAX(customer_id) FROM customer));
+
+SELECT setval(pg_get_serial_sequence('employee', 'employee_id'), (SELECT MAX(employee_id) FROM employee));
 
 
Index: music/transactions/add_tracks_to_playlist.sql
===================================================================
--- music/transactions/add_tracks_to_playlist.sql	(revision 2061961352f193fd60d2c6841e8c4bea380d1b47)
+++ music/transactions/add_tracks_to_playlist.sql	(revision 2061961352f193fd60d2c6841e8c4bea380d1b47)
@@ -0,0 +1,21 @@
+CREATE OR REPLACE FUNCTION add_tracks_to_playlist(
+    _playlist_id INTEGER,
+    _playlist_tracks JSON
+) RETURNS VOID AS $$
+DECLARE
+    track JSON;
+    _track_id INTEGER;
+BEGIN
+    BEGIN
+        FOR track IN SELECT * FROM json_array_elements(_playlist_tracks)
+        LOOP
+            _track_id := (track->>'track_id')::INTEGER;
+
+            INSERT INTO playlist_track (playlist_id, track_id)
+            VALUES (_playlist_id, _track_id);
+        END LOOP;
+    EXCEPTION WHEN OTHERS THEN
+        RAISE EXCEPTION 'Error adding tracks to playlist: %', SQLERRM;
+    END;
+END;
+$$ LANGUAGE plpgsql;
