@@ -2276,6 +2276,7 @@ fn parse_create_trigger() {
2276
2276
assert_eq ! (
2277
2277
create_stmt,
2278
2278
Statement :: CreateTrigger {
2279
+ or_alter: false ,
2279
2280
or_replace: false ,
2280
2281
is_constraint: false ,
2281
2282
name: ObjectName :: from( vec![ Ident :: new( "reminder1" ) ] ) ,
@@ -2319,6 +2320,7 @@ fn parse_create_trigger() {
2319
2320
assert_eq ! (
2320
2321
create_stmt,
2321
2322
Statement :: CreateTrigger {
2323
+ or_alter: false ,
2322
2324
or_replace: false ,
2323
2325
is_constraint: false ,
2324
2326
name: ObjectName :: from( vec![ Ident :: new( "some_trigger" ) ] ) ,
@@ -2359,6 +2361,82 @@ fn parse_create_trigger() {
2359
2361
assert_eq ! (
2360
2362
create_stmt,
2361
2363
Statement :: CreateTrigger {
2364
+ or_alter: false ,
2365
+ or_replace: false ,
2366
+ is_constraint: false ,
2367
+ name: ObjectName :: from( vec![ Ident :: new( "some_trigger" ) ] ) ,
2368
+ period: TriggerPeriod :: For ,
2369
+ events: vec![ TriggerEvent :: Insert ] ,
2370
+ table_name: ObjectName :: from( vec![ Ident :: new( "some_table" ) ] ) ,
2371
+ referenced_table_name: None ,
2372
+ referencing: vec![ ] ,
2373
+ trigger_object: TriggerObject :: Statement ,
2374
+ include_each: false ,
2375
+ condition: None ,
2376
+ exec_body: None ,
2377
+ statements: vec![ Statement :: Return ( ReturnStatement {
2378
+ value: None ,
2379
+ } ) ] ,
2380
+ characteristics: None ,
2381
+ }
2382
+ ) ;
2383
+ }
2384
+
2385
+ #[ test]
2386
+ fn parse_mssql_create_trigger ( ) {
2387
+ let create_or_alter_trigger = r#"
2388
+ CREATE OR ALTER TRIGGER some_trigger ON some_table FOR INSERT
2389
+ AS
2390
+ BEGIN
2391
+ RAISERROR('Trigger fired', 10, 1)
2392
+ END
2393
+ "# ;
2394
+ let create_stmt = ms ( ) . one_statement_parses_to ( create_or_alter_trigger, "" ) ;
2395
+ assert_eq ! (
2396
+ create_stmt,
2397
+ Statement :: CreateTrigger {
2398
+ or_alter: true ,
2399
+ or_replace: false ,
2400
+ is_constraint: false ,
2401
+ name: ObjectName :: from( vec![ Ident :: new( "some_trigger" ) ] ) ,
2402
+ period: TriggerPeriod :: For ,
2403
+ events: vec![ TriggerEvent :: Insert ] ,
2404
+ table_name: ObjectName :: from( vec![ Ident :: new( "some_table" ) ] ) ,
2405
+ referenced_table_name: None ,
2406
+ referencing: vec![ ] ,
2407
+ trigger_object: TriggerObject :: Statement ,
2408
+ include_each: false ,
2409
+ condition: None ,
2410
+ exec_body: None ,
2411
+ statements: vec![ Statement :: RaisError {
2412
+ message: Box :: new( Expr :: Value (
2413
+ ( Value :: SingleQuotedString ( "Trigger fired" . to_string( ) ) ) . with_empty_span( )
2414
+ ) ) ,
2415
+ severity: Box :: new( Expr :: Value (
2416
+ ( Value :: Number ( "10" . parse( ) . unwrap( ) , false ) ) . with_empty_span( )
2417
+ ) ) ,
2418
+ state: Box :: new( Expr :: Value (
2419
+ ( Value :: Number ( "1" . parse( ) . unwrap( ) , false ) ) . with_empty_span( )
2420
+ ) ) ,
2421
+ arguments: vec![ ] ,
2422
+ options: vec![ ] ,
2423
+ } ] ,
2424
+ characteristics: None ,
2425
+ }
2426
+ ) ;
2427
+
2428
+ let create_trigger_with_return = r#"
2429
+ CREATE TRIGGER some_trigger ON some_table FOR INSERT
2430
+ AS
2431
+ BEGIN
2432
+ RETURN;
2433
+ END
2434
+ "# ;
2435
+ let create_stmt = ms ( ) . one_statement_parses_to ( create_trigger_with_return, "" ) ;
2436
+ assert_eq ! (
2437
+ create_stmt,
2438
+ Statement :: CreateTrigger {
2439
+ or_alter: false ,
2362
2440
or_replace: false ,
2363
2441
is_constraint: false ,
2364
2442
name: ObjectName :: from( vec![ Ident :: new( "some_trigger" ) ] ) ,
0 commit comments