@@ -3291,3 +3291,51 @@ fn parse_looks_like_single_line_comment() {
32913291 "UPDATE account SET balance = balance WHERE account_id = 5752" ,
32923292 ) ;
32933293}
3294+
3295+ #[ test]
3296+ fn parse_create_trigger ( ) {
3297+ let sql_create_trigger = r#"
3298+ CREATE TRIGGER emp_stamp BEFORE INSERT ON emp
3299+ FOR EACH ROW EXECUTE FUNCTION emp_stamp();
3300+ "# ;
3301+ let create_stmt = mysql ( ) . one_statement_parses_to ( sql_create_trigger, "" ) ;
3302+ assert_eq ! (
3303+ create_stmt,
3304+ Statement :: CreateTrigger {
3305+ or_replace: false ,
3306+ is_constraint: false ,
3307+ name: ObjectName :: from( vec![ Ident :: new( "emp_stamp" ) ] ) ,
3308+ period: TriggerPeriod :: Before ,
3309+ events: vec![ TriggerEvent :: Insert ] ,
3310+ table_name: ObjectName :: from( vec![ Ident :: new( "emp" ) ] ) ,
3311+ referenced_table_name: None ,
3312+ referencing: vec![ ] ,
3313+ trigger_object: TriggerObject :: Row ,
3314+ include_each: true ,
3315+ condition: None ,
3316+ exec_body: TriggerExecBody {
3317+ exec_type: TriggerExecBodyType :: Function ,
3318+ func_desc: FunctionDesc {
3319+ name: ObjectName :: from( vec![ Ident :: new( "emp_stamp" ) ] ) ,
3320+ args: None ,
3321+ }
3322+ } ,
3323+ characteristics: None ,
3324+ }
3325+ ) ;
3326+ }
3327+
3328+ #[ test]
3329+ fn parse_drop_trigger ( ) {
3330+ let sql_drop_trigger = "DROP TRIGGER emp_stamp;" ;
3331+ let drop_stmt = mysql ( ) . one_statement_parses_to ( sql_drop_trigger, "" ) ;
3332+ assert_eq ! (
3333+ drop_stmt,
3334+ Statement :: DropTrigger {
3335+ if_exists: false ,
3336+ trigger_name: ObjectName :: from( vec![ Ident :: new( "emp_stamp" ) ] ) ,
3337+ table_name: None ,
3338+ option: None ,
3339+ }
3340+ ) ;
3341+ }
0 commit comments