У меня есть таблица с именем BFF, которая хранит идентификатор пользователя и идентификатор пользователя лучшего друга, и я бы хотел ограничить эту таблицу, имея ровно 3 числа лучших друзей для каждого другого пользователя.Ограничить количество записей с помощью триггера и ограничений в MySQL
Я имею в виду, если таблица structre является:
BFFs(userID, userID)
и записи:
(3286, 1212)
(3286, 4545)
(3286, 7878)
И в этом случае, если пользователь с ID 3286 не должно быть позволено иметь новый рекорд такого как (3286, xyzt).
Я написал этот триггер, но я не уверен:
CREATE TRIGGER BFFControl
BEFORE INSERT ON BFFs
FOR EACH ROW
DECLARE
numberOfBFFs INTEGER;
max_BFFs INTEGER := 3;
BEGIN
SELECT COUNT(*) INTO numberOfBFFs
FROM BFFs
WHERE sender =: NEW.sender
IF :OLD.sender =: NEW.sender THEN
RETURN;
ELSE
IF numberOfBFFs >= max_BFFs THEN
RAISE_APPLICATION_ERROR(-20000, 'Users are allowed to have at most thre friends.');
END IF;
END IF;
END;
/
Как я должен restrich это реляционных таблиц с помощью утверждений или триггеров?
Благодаря
могут вы видите редактирование моего вопроса, каковы различия между вашим ответом и моим триггером? – CanCeylan
Триггеры трудно отлаживать. Обычно я избегаю их, когда существует решение ограничения. –
Хотя они не являются чистым злом, читайте об этом: [База данных запускает зло?] (Http://stackoverflow.com/questions/460316/are-database-triggers-evil) –