У меня есть таблица друзей, в которой есть поля «id», «friend (INTEGER)» и «user (INTEGER)».избегать дублирования в mysql insert
Дружеская связь существует между пользователем и другом. т.е.
id user friend
6 22 45
7 45 22
тот же друг отношения и должны рассматриваться как дубликат записи.
Я хочу, чтобы ввести целую много записей сразу, так что-то вроде:
INSERT INTO friends (user, friend) VALUES(22, 34), (22, 76), (22, 567)...;
В этой ситуации, я могу легко использовать ПРОИГНОРИРУЙТЕ, чтобы не вводить дубликат (22, 34), вход (если (22, 34) уже существует), но есть ли способ, которым я также могу избежать ввода (22, 34), если (34, 22) уже существует, так как это то же самое отношение.
Самый простой способ: Всегда сортируйте свои пары отношений перед вставкой: '(22,45) -> (22,45); (45,22) -> (22,45); 'и сохраняйте уникальное ограничение ключа для обоих столбцов. – dognose
@satishrajak вы не читали вопрос, не так ли? – dognose
Вы можете добавить триггер до вставки, чтобы проверить столбец друзей для ключа и прервать вставку, если отношение уже существует. Однако, как вы хотите настроить этот код, я могу назвать вас своим другом, и вы можете не согласиться. Таким образом, ваша вторая вставка (45,22) является скорее подтверждением этой дружбы, которую вы просто хотите пропустить. –