diff --git a/trac/trac/wiki/model.py b/trac/trac/wiki/model.py
index b285b4a..5cf813b 100644
--- a/trac/trac/wiki/model.py
+++ b/trac/trac/wiki/model.py
@@ -62,7 +62,7 @@ class WikiPage(object):
         else:
             cursor.execute("SELECT version,time,author,text,comment,readonly "
                            "FROM wiki "
-                           "WHERE name=%s ORDER BY version DESC LIMIT 1",
+                           "WHERE name=%s AND version > 0 ORDER BY version DESC LIMIT 1",
                            (name,))
         row = cursor.fetchone()
         if row:
@@ -89,12 +89,12 @@ class WikiPage(object):
             cursor = db.cursor()
             if version is None:
                 # Delete a wiki page completely
-                cursor.execute("DELETE FROM wiki WHERE name=%s", (self.name,))
+                cursor.execute("UPDATE wiki SET version=version-(SELECT max(version) FROM wiki WHERE name=%s)+(SELECT min(version) FROM wiki WHERE name=%s)-1 WHERE name=%s AND version > 0", (self.name, self.name, self.name,))
                 self.env.log.info('Deleted page %s' % self.name)
             else:
                 # Delete only a specific page version
-                cursor.execute("DELETE FROM wiki WHERE name=%s and version=%s",
-                               (self.name, version))
+                cursor.execute("UPDATE wiki SET version=version-(SELECT max(version) FROM wiki WHERE name=%s)+(SELECT min(version) FROM wiki WHERE name=%s)-1 WHERE name=%s and version=%s AND version > 0",
+                               (self.name, self.name, self.name, version))
                 self.env.log.info('Deleted version %d of page %s'
                                   % (version, self.name))
 
