2016-09-26 147 views
0

我使用的是trigger在admitted_student using mysql. This is my trigger`代码插入火后:为什么这个触发器没有执行?

DELIMITER // 

CREATE TRIGGER Record_after_insert 
AFTER INSERT 
    ON admitted_student FOR EACH ROW 

BEGIN 

    DECLARE who varchar(50); 
    DECLARE IDD int (15); 
    SELECT admitted_student_id FROM admitted_student ORDER BY admitted_student_id DESC into IDD; 
    SELECT USER() INTO who; 
    INSERT INTO student_audit 
    (id, 
    attime, 
    who) 
    VALUES 
    (IDD, 
    SYSDATE(), 
    who); 
END; 
DELIMITER ; 

这是我的桌子上,我使用触发器:

enter image description here

而且这个我的触发表:

enter image description here

当我执行触发器代码,然后它给了我下面的错误:

enter image description here

+0

您将分隔符更改为'//',但从不使用它。 –

+0

你想要做什么,首先选择stmt? – Drew

+0

iirc合适的更现实的格式将是'SELECT acceptance_student_id INTO IDD FROM admission_student ORDER BY admit_student_id DESC LIMIT 1;'将范围限制为零或一个值,否则该东西将以您拥有的方式爆炸 – Drew

回答

1

对于非的phpMyAdmin尝试:

DROP TRIGGER IF EXISTS Record_after_insert; 
DELIMITER // 
CREATE TRIGGER Record_after_insert 
AFTER INSERT 
    ON admitted_student FOR EACH ROW 

BEGIN 
    INSERT INTO student_audit (action,id,attime,who) 
    SELECT 'something',NEW.admitted_student_id,now(),CURRENT_USER(); 
END; // 
DELIMITER ; 

为PHPMyAdmin的尝试:

DROP TRIGGER IF EXISTS Record_after_insert; 
CREATE TRIGGER Record_after_insert 
AFTER INSERT 
    ON admitted_student FOR EACH ROW 

BEGIN 
    INSERT INTO student_audit (action,id,attime,who) 
    SELECT 'something',NEW.admitted_student_id,now(),CURRENT_USER(); 
END; 

的phpMyAdmin没有按用户a DELIMITERCURRENT_USER()是您在登录时解决的用户。

who VARCHAR(10)应该像VARCHAR(100)一样。

attime应该是DATETIME不是它是什么。

+0

PHPMYAdmin代码中第7行的语法错误。 –