Задать вопрос
@Farrien
Tell me who

Как поставить условие сравнение двух полей в таблице MySQL?

Точнее возможно ли...
Для практики создаю систему друзей (надо же когда-нибудь попробовать) через две таблицы: первая связи друзей и вторая запросы дружбы.
В связях друзей есть два поля user_1 и user_2 и придумал сделать так чтоб первое поле это всегда юзер с наименьшим id, так как строгий ключ (user_1, user_2) будет лучше. И хочется создать условия, где значение user_2 всегда больше user_1, а иначе ошибка. Чтоб когда если делался INSERT с user_1 больше второго, то ошибка.
Возможно ли?
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@bkosun
Используйте триггеры, примерно так:

CREATE TRIGGER `before_insert_table` BEFORE INSERT ON `table` FOR EACH ROW BEGIN
	IF `NEW`.`field_1` > `NEW`.`field_2` THEN
		SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred';
	END IF;
END


https://dev.mysql.com/doc/refman/8.0/en/trigger-sy...
https://dev.mysql.com/doc/refman/8.0/en/signal.html

spoiler
Вы неправильно проектируете базу данных, но это уже совсем другая история.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Giperoglif
делайте INSERT через хранимую процедуру. но вообще - бред. за что люблю тостер так это за то что иной раз такое прочитаешь, что долго потом думаешь как у людей до такого сознание расширяется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
06 дек. 2024, в 05:29
20000 руб./за проект
06 дек. 2024, в 03:58
10000 руб./за проект
06 дек. 2024, в 02:20
5000 руб./за проект