diff --git a/database/actions.py b/database/actions.py
index 3b2cdcf568dca5676ed4e32f298be6b50ead6a3e..a346f0da38e13d5f0045a55adcda610dc8e417e2 100644
--- a/database/actions.py
+++ b/database/actions.py
@@ -25,7 +25,6 @@ from os import chdir
 from datetime import datetime
 from database.base import MissingTableError
 from database.database_table import gen_data_table, copy_tabbed_to_csv
-import database.groups
 import settings
 from database.groups import DATA_GROUP, DATABASE_TABLE_NAME
 import pandas as pd
@@ -53,6 +52,7 @@ def temporary_data(connection, file_name, table, year, offset=2,
 
     table.populate_temporary(ttable, file_name, header, year, delimiters, null, offset, bind=connection)
     table.apply_derivatives(ttable, ttable.columns.keys(), year, bind=connection)
+    table.add_pk_to_temporary(ttable, bind=connection)
 
     return ttable
 
diff --git a/database/database_table.py b/database/database_table.py
index f603016b905de947d2b2209a32590c09eeb3de2f..579619accf5668102290f534ffece6fec0480178 100644
--- a/database/database_table.py
+++ b/database/database_table.py
@@ -28,6 +28,7 @@ import jsbeautifier
 from sqlalchemy import Table, Column, inspect, Integer, String, Boolean,\
                        PrimaryKeyConstraint, ForeignKeyConstraint, text
 from sqlalchemy.sql import select, insert, update, delete, func
+from sqlalchemy.schema import AddConstraint
 import pandas as pd
 
 from database.base import DatabaseColumnError, MissingProtocolError, DatabaseMappingError, \
@@ -187,18 +188,28 @@ class DatabaseTable(Table):
             except InvalidTargetError:
                 pass
 
-        pks = get_primary_keys(self)
-        primary_key = []
-        for pk in pks:
-            primary_key.append(ttable.columns.get(pk.name))
-
-        ttable.constraints.add(PrimaryKeyConstraint(*primary_key))
-
         for column in additional:
             ttable.append_column(Column(column, String(255)))
 
         return ttable
 
+    def add_pk_to_temporary(self, ttable, bind=None):
+        '''
+        Add the primary keys constraint to the temporary table
+        '''
+        if bind is None:
+            bind = self.metadata.bind
+
+        pks = get_primary_keys(self)
+        primary_keys = []
+        for pk in pks:
+            primary_keys.append(ttable.columns.get(pk.name))
+
+        for pk in primary_keys:
+            new_pk = PrimaryKeyConstraint(pk)
+            query = AddConstraint(new_pk)
+            bind.execute(query)
+
     def populate_temporary(self, ttable, in_file, header, year, delimiters=[';', '\\n', '"'],
                            null='', offset=2, bind=None):
         '''
@@ -235,11 +246,13 @@ class DatabaseTable(Table):
         '''
         Creates a new temporary table where its data mirrors the original, taken directly from the database
         '''
-        ttable = self.get_temporary(year=year)
-        ttable.create(bind)
         if bind is None:
             bind = self.metadata.bind
 
+        ttable = self.get_temporary(year=year)
+        ttable.create(bind)
+        self.add_pk_to_temporary(ttable, bind)
+
         original_columns = list(self.columns)
         query = ttable.insert().from_select(original_columns, select(original_columns)
                                                                     .where(self.c[settings.YEAR_COLUMN] == year))
diff --git a/database/groups.py b/database/groups.py
index d99ab8310cc8ecb36fca8dbb0f8549b7a2be9b69..247fea5ed5dbd77ed64acebb2f2637aa8e92e5aa 100644
--- a/database/groups.py
+++ b/database/groups.py
@@ -89,7 +89,9 @@ BASE = [
 SIMCAQ_AGGREGATE = [
     'docente_por_escola.sql',
     'idm.sql',
-    'projecao_matricula.sql'
+    'projecao_matricula.sql',
+    'transporte.sql',
+    'docente_por_formacao.sql'
 ]
 # ---------------------------------------------------------------------------------------#