diff --git a/datafiles/schema.sql b/datafiles/schema.sql
index 9ce1f579d38dbf728dca8a10b1b3203d2a998d9c..f4d93869faa801721c6a3462815e3ec240bc70a5 100644
--- a/datafiles/schema.sql
+++ b/datafiles/schema.sql
@@ -46,7 +46,8 @@ CREATE TABLE service_connections (
     bandwidth               integer                     NOT NULL, -- mbps
     parameter               parameter[],
     security_attributes     security_attribute[],
-    connection_trace        text[]
+    connection_trace        text[],
+    CHECK ( start_time < end_time)
 );
 
 -- internal references to connections that are part of a service connection
@@ -98,7 +99,8 @@ CREATE TABLE generic_backend_connections (
     directionality          directionality              NOT NULL,
     bandwidth               integer                     NOT NULL, -- mbps
     parameter               parameter[],
-    allocated               boolean                     NOT NULL  -- indicated if the resources are actually allocated
+    allocated               boolean                     NOT NULL, -- indicated if the resources are actually allocated
+    CHECK ( start_time < end_time)
 );
 
 
diff --git a/test/test_database.py b/test/test_database.py
new file mode 100644
index 0000000000000000000000000000000000000000..229d46494e2d86e579c12723c948a80893313ffd
--- /dev/null
+++ b/test/test_database.py
@@ -0,0 +1,50 @@
+import datetime
+import psycopg2
+
+from twisted.internet import defer
+from twisted.trial import unittest
+
+from opennsa import state
+from opennsa.backends.common import genericbackend
+
+from . import db
+
+
+
+class DatabaseTest(unittest.TestCase):
+
+    def setUp(self):
+        db.setupDatabase()
+
+
+    @defer.inlineCallbacks
+    def testReverseStartEndTimeConstraint(self):
+
+        now = datetime.datetime.utcnow()
+        start_time = now - datetime.timedelta(seconds=10)
+        end_time   = now - datetime.timedelta(seconds=1000)
+
+        conn = genericbackend.GenericBackendConnections(
+            connection_id='conn-123',
+            revision=0,
+            global_reservation_id='gid-123',
+            description='test',
+            requester_nsa='req-nsa',
+            reserve_time=now,
+            reservation_state=state.RESERVE_START,
+            provision_state=state.RELEASED,
+            lifecycle_state=state.CREATED,
+            data_plane_active=False,
+            source_network='src-net', source_port='src-port', source_label=None,
+            dest_network='dst-net', dest_port='dst-port', dest_label=None,
+            start_time=start_time, end_time=end_time,
+            symmetrical=False, directionality='Bidirectional', bandwidth=200,
+            allocated=False
+        )
+
+        try:
+            yield conn.save()
+            self.fail('Should have gotten integrity error from database')
+        except psycopg2.IntegrityError as e:
+            pass # intended
+