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

when文の近くに何かが間違っていることがわかります。それを見つけるのを助けてくれますか?このトリガー機能を修正するにはどうすればよいですか?

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

Hey Rahul私はあなたのソリューションから助けを借りて、下記の適切な解決策に答えました。ありがとうございます。 –

0

右ソリューションです参照:

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

ここCLI

を経由してトリガーを作成しているときは、区切り文字が欠落していることは、それを作成するための構文です -

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; 
関連する問題