Na minha tabela armazena duas colunas de ID do usuário, o que estou tentando fazer é marcar o ID do usuário com par. Por exemplo, o ID do usuário assim:
user_1_id user_2_id
2 3
3 2
pensamos que os dois gravam como um par (apenas dois usuários, mas a sequência é diferente). Eu adicionei uma nova coluna de geração que calcula com user_1_id + user_2_id
, se o resultado for o mesmo, é um par. Mas neste momento estou enfrentando um novo problema que não funciona perfeito porque o usuário 0 e 5 estava em conflito com o registro, na verdade o 0 e 5 era um novo par de usuário. o que devo fazer para marcar o par de usuários perfeitamente? Eu tenho pensando neste problema por horas. esta é a informação real do usuário no meu projeto:
Esta é a minha tabela DDL:
CREATE TABLE `spark_game_user_contact` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`game_id` bigint(20) DEFAULT NULL,
`user_id` bigint(20) NOT NULL,
`target_user_id` bigint(20) NOT NULL,
`is_exchange` int(11) NOT NULL DEFAULT '0',
`is_whisper` int(11) NOT NULL DEFAULT '0',
`pair_flag` bigint(20) GENERATED ALWAYS AS ((`user_id` + `target_user_id`)) STORED,
`updated_time` bigint(20) NOT NULL,
`created_time` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_gut` (`game_id`,`user_id`,`target_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4;
Se você quiser que esse par seja exclusivo, torne essa coluna virtual, mas adicione um índice exclusivo por ela.