Я хотел бы, чтобы мои пользователи сайта отправляли данные с моей формой HTML. Тем не менее, я хочу, чтобы каждый пользователь был ограничен до 5 заявок. Для этого я использую триггер DML MySQL, чтобы ограничить мой столбец "um_id" только пятью строками на один идентификатор. Но я знаю, что мой синтаксис неправильный, и я прошу кого-нибудь здесь помочь исправить его, чтобы он действительно мог работать.
Сейчас я тестирую это в PHPMyAdmin, и в конечном итоге он будет помещен в мой PHP файл. Таким образом, um_id будет иметь значение и быть объединенным с этим триггером SQL.
CREATE TRIGGER ml_trigger
BEFORE INSERT
ON ml_character;
BEGIN
IF ( SELECT . 'um_id' . COUNT(*) > 5 ) THEN ROLLBACK;
END IF;
Что-то вроде этого:
DELIMITER $$
CREATE TRIGGER ml_trigger_bi
BEFORE INSERT
ON ml_character
FOR EACH ROW
BEGIN
-- get count of existing rows with same um_id
DECLARE li_cnt BIGINT;
SELECT COUNT(*) AS cnt
FROM ml_character t
WHERE t.um_id = NEW.um_id
INTO li_cnt ;
-- if already five rows, throw error
IF li_cnt >= 5 THEN
SIGNAL '45000' SET MESSAGE_TEXT = 'Already five rows in ml_character';
END IF;
END$$
DELIMITER ;
Значение um_id
будет исходить от вставленной строки; мы NEW.um_id
это значение как на NEW.um_id
.
having
на самом деле не уверен , что вы запрашивая , но что - то вродеSELECT count(*) as the_count where um_id = ? having the_count < 5
вSELECT count(*) as the_count where um_id = ? having the_count < 5