2016-09-12 5 views
0
create trigger trig1 
    -> after insert on student 
    -> for each row 
    -> when (new.name="rgb") 
    -> begin 
    -> insert into class ("ug1",1) 
    -> end; 

언제 나 근처에 뭔가 잘못되었다고 알려줍니다. 알아내는 것을 도와 주실 수 있습니까?이 트리거 기능은 어떻게 수정합니까?

desc class; 
+---------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+---------+-------------+------+-----+---------+-------+ 
| name | varchar(40) | YES |  | NULL |  | 
| section | int(11)  | YES |  | NULL |  | 
+---------+-------------+------+-----+---------+-------+ 
2 rows in set (0.06 sec) 

mysql> desc student; 
+-------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+-------------+------+-----+---------+-------+ 
| roll | int(11)  | YES |  | NULL |  | 
| name | varchar(40) | YES |  | NULL |  | 
+-------+-------------+------+-----+---------+-------+ 

다음 표는 두 표에 대한 설명입니다.

+0

나는 당신의 데이터베이스가 MySQL이라고 추측하고있다. 그렇다면 데이터베이스에서 ANSI 따옴표를 사용할 수 있습니까? http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes – jac

답변

1

방아쇠 문장은 아래와 같이되어야합니다. 참조 Trigger Syntax and Examples

create trigger trig1 
    -> after insert on student 
    -> for each row 
    -> begin      //begin should come first 
    -> if (new.name='rgb')   //use IF condition 
    -> insert into class values('ug1',1); //missing values keyword here 
    -> end if; 
    -> end; 
+0

이 작동하지 않았습니다. –

+0

안녕하세요 Rahul 저는 솔루션에서 도움을 받아 아래의 올바른 솔루션에 대답했습니다. 감사합니다. –

0

오른쪽 솔루션입니다 다음은 CLI

를 통해 트리거를 작성하는 동안 당신은 구분 기호를 누락

DELIMITER @ 
-> create trigger trig1 
-> after insert on student 
-> for each row 
-> begin 
-> if (new.name = 'rgb') 
-> then 
-> insert into class values ('ug1',1); 
-> end if; 
-> end; 
@ 
0

되는 구문을 만들 -

delimiter // 
create trigger trig1 
after insert on student 
for each row 
begin 
    if new.name='rgb' then 
    insert into `class` ('ug1',1); 
    end if ; 
end// 

delimiter; 
관련 문제