--- loginticket.install	2007-11-08 12:08:28.000000000 +0800
+++ loginticket.install	2009-03-22 18:46:54.000000000 +0800
@@ -18,22 +18,26 @@ function loginticket_install() {
     case 'mysql':
     case 'mysqli':
       db_query("CREATE TABLE {loginticket} (
+        tid int unsigned NOT NULL AUTO_INCREMENT,
         passcode_md5 char(32) NOT NULL,
         purpose varchar(32) NOT NULL default '',
         expires int NOT NULL default '0',
         uid int unsigned NOT NULL default '0',
-        PRIMARY KEY (passcode_md5),
+        PRIMARY KEY (tid),
+        UNIQUE KEY (passcode_md5),
         KEY uid (uid)
       ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
       break;
 
     case 'pgsql':
       db_query("CREATE TABLE {loginticket} (
+        tid int unsigned NOT NULL AUTO_INCREMENT,
         passcode_md5 char(32) NOT NULL,
         purpose varchar(32) NOT NULL default '',
         expires int NOT NULL default '0',
         uid int NOT NULL default '0',
-        PRIMARY KEY (passcode_md5)
+        PRIMARY KEY (tid),
+        UNIQUE (passcode_md5)
       )");
       db_query("CREATE INDEX {loginticket}_uid_idx ON {loginticket} (uid)");
       break;
@@ -56,13 +60,15 @@ function loginticket_uninstall() {
 
 
 /**
- * Implementation of hook_update_1().
- * Original Release.
+ * Implementation of hook_update_2().
+ * Add tid as primary key, and use passcode_md5 as unique key. (Issue #229797)
  */
-function loginticket_update_1() {
+function loginticket_update_2() {
   $items = array();
   // Examples ONLY
   // $items[] = update_sql("ALTER TABLE {loginticket} ADD new_column text");
   // $items[] = update_sql("ALTER TABLE {loginticket} DROP old_column");
+  $items[] = update_sql("ALTER TABLE {loginticket} DROP PRIMARY KEY , ADD UNIQUE (passcode_md5)");
+  $items[] = update_sql("ALTER TABLE {loginticket} ADD tid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
   return $items;
 }
