diff --git a/synapse/storage/room.py b/synapse/storage/room.py
index 41c65e112a65d5ce43ffea935acd5cdff91592c7..33870b585e4afbb04a6a131cc2aa852400818448 100644
--- a/synapse/storage/room.py
+++ b/synapse/storage/room.py
@@ -500,10 +500,12 @@ class RoomStore(RoomWorkerStore, SearchStore):
 
     @defer.inlineCallbacks
     def block_room(self, room_id, user_id):
-        yield self._simple_insert(
+        yield self._simple_upsert(
             table="blocked_rooms",
-            values={
+            keyvalues={
                 "room_id": room_id,
+            },
+            insertion_values={
                 "user_id": user_id,
             },
             desc="block_room",