Search code examples
mysqltriggersadminer

Create Mysql Trigger before Insert


i've tried to make an MYSQL Trigger on Adminer, but it doesn't work. Here is my Code:

    CREATE TRIGGER handle100kRows BEFORE INSERT ON `4013834123456`
FOR EACH ROW
BEGIN

    IF (SELECT COUNT(*) FROM `4013834123456`) = "100000" THEN BEGIN
        DELETE FROM 4013834123456 ORDER BY id LIMIT 1
    END
    END IF

END;

Following errors appear:(1064): (1064): Syntax error near '4013834123456 ORDER BY id LIMIT 1 END END IF END' at line 6

Ive just tried it with ; on the END's but then appears more errors... I work with Adminer 4.1.0 an MySQL Database! Thx for help!

UPDATE, now it works, with delimiter:

delimiter |
CREATE TRIGGER handle100kRows BEFORE INSERT ON `4013834123456`
FOR EACH ROW
BEGIN
    IF (SELECT COUNT(*) FROM `4013834123456`) = "100000" THEN
        DELETE FROM `4013834123456` ORDER BY id LIMIT 1;
    END IF;
END;
delimiter;

Solution

  • You forgot the escape the table name 4013834123456 with backticks.

    Also you have and end too much.

    delimiter |
    CREATE TRIGGER handle100kRows BEFORE INSERT ON `4013834123456`
    FOR EACH ROW
    BEGIN
        IF (SELECT COUNT(*) FROM `4013834123456`) = "100000" THEN
            DELETE FROM `4013834123456` ORDER BY id LIMIT 1;
        END IF;
    END
    |
    delimiter ;