~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_08.inc

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#======================================================================
 
2
#
 
3
# Trigger Tests 
 
4
# (test case numbering refer to requirement document TP v1.1) 
 
5
#======================================================================
 
6
# WL#4084: enable disabled parts, 2007-11-15 hhunger
 
7
 
 
8
# General setup for Trigger tests
 
9
let $message= Testcase: 3.5:;
 
10
--source include/show_msg.inc
 
11
 
 
12
--disable_abort_on_error
 
13
 
 
14
        create User test_general@localhost;
 
15
        set password for test_general@localhost = password('PWD');
 
16
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
 
17
 
 
18
        create User test_super@localhost;
 
19
        set password for test_super@localhost = password('PWD');
 
20
        grant ALL on *.* to test_super@localhost with grant OPTION;
 
21
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
22
        connect (con2_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
23
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
24
        connect (con2_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
25
        connection default;
 
26
 
 
27
#################################
 
28
####### Section 3.5.8 ###########
 
29
# Checks on Triggered Actions   #
 
30
#################################
 
31
 
 
32
#Section 3.5.8.1
 
33
# Testcase: Ensure that the triggered action of every trigger always executes 
 
34
#           correctly and the results in all expected changes made to the database
 
35
let $message= Testcase 3.5.8.1: (implied in previous tests);
 
36
--source include/show_msg.inc
 
37
 
 
38
#Section 3.5.8.2
 
39
# Testcase: Ensure that the triggered actions of every trigger never results 
 
40
#           in an unexpected change made to the database.
 
41
let $message= Testcase 3.5.8.2: (implied in previous tests);
 
42
--source include/show_msg.inc
 
43
 
 
44
 
 
45
#Section 3.5.8.3 / 3.5.8.4
 
46
#Test case: Ensure that the triggered action can any valid SQL statement / set 
 
47
#           of valid SQL statements, provided the statements are written within
 
48
#           a BEGIN/END compound statement construct
 
49
# OBN - At this point the tests focuses on the the INSERT/UPDATE/DELETE SQL statements
 
50
#       as there are the most likely to be used in triggers
 
51
let $message= Testcase 3.5.8.3/4:;
 
52
--source include/show_msg.inc
 
53
 
 
54
# creating test tables to perform the trigger SQL on
 
55
        connection con2_super;
 
56
        create database db_test;
 
57
        grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general;
 
58
        grant LOCK TABLES on db_test.* to test_general;
 
59
        Use db_test;
 
60
        eval create table t1_i ( 
 
61
                i120 char ascii not null DEFAULT b'101',
 
62
                i136 smallint zerofill not null DEFAULT 999,
 
63
                i144 int zerofill not null DEFAULT 99999,
 
64
                i163 decimal (63,30)) engine=$engine_type;
 
65
        eval create table t1_u ( 
 
66
                u120 char ascii not null DEFAULT b'101',
 
67
                u136 smallint zerofill not null DEFAULT 999,
 
68
                u144 int zerofill not null DEFAULT 99999,
 
69
                u163 decimal (63,30)) engine=$engine_type;
 
70
        eval create table t1_d ( 
 
71
                d120 char ascii not null DEFAULT b'101',
 
72
                d136 smallint zerofill not null DEFAULT 999,
 
73
                d144 int zerofill not null DEFAULT 99999,
 
74
                d163 decimal (63,30)) engine=$engine_type;
 
75
        Insert into t1_u values ('a',111,99999,999.99);
 
76
        Insert into t1_u values ('b',222,99999,999.99);
 
77
        Insert into t1_u values ('c',333,99999,999.99);
 
78
        Insert into t1_u values ('d',222,99999,999.99);
 
79
        Insert into t1_u values ('e',222,99999,999.99);
 
80
        Insert into t1_u values ('f',333,99999,999.99);
 
81
        Insert into t1_d values ('a',111,99999,999.99);
 
82
        Insert into t1_d values ('b',222,99999,999.99);
 
83
        Insert into t1_d values ('c',333,99999,999.99);
 
84
        Insert into t1_d values ('d',444,99999,999.99);
 
85
        Insert into t1_d values ('e',222,99999,999.99);
 
86
        Insert into t1_d values ('f',222,99999,999.99);
 
87
 
 
88
let $message= 3.5.8.4 - multiple SQL;
 
89
--source include/show_msg.inc
 
90
# Trigger definition - multiple SQL
 
91
        use test;
 
92
        delimiter //;
 
93
        Create trigger trg1 AFTER INSERT on tb3 for each row
 
94
        BEGIN
 
95
                insert into db_test.t1_i 
 
96
                        values (new.f120, new.f136, new.f144, new.f163);
 
97
                update db_test.t1_u 
 
98
                        set u144=new.f144, u163=new.f163
 
99
                        where u136=new.f136; 
 
100
                delete from db_test.t1_d where d136= new.f136;
 
101
                select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u 
 
102
                        where u136= new.f136; 
 
103
        END// 
 
104
        delimiter ;//
 
105
 
 
106
# Test trigger execution - multiple SQL
 
107
        connection con2_general;
 
108
        Use test;
 
109
        set @test_var=0;
 
110
        Insert into tb3 (f120, f122, f136, f144, f163) 
 
111
                values ('1', 'Test 3.5.8.4', 222, 23456, 1.05);
 
112
        Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4';
 
113
        --sorted_result
 
114
        select * from db_test.t1_i;
 
115
        --sorted_result
 
116
        select * from db_test.t1_u;
 
117
        --sorted_result
 
118
        select * from db_test.t1_d;
 
119
        select @test_var;
 
120
 
 
121
 
 
122
let $message= 3.5.8.4 - single SQL - insert;
 
123
--source include/show_msg.inc
 
124
# Trigger definition - single SQL Insert
 
125
        connection con2_super;
 
126
        delimiter //;
 
127
        Create trigger trg2 BEFORE UPDATE on tb3 for each row
 
128
        BEGIN
 
129
                insert into db_test.t1_i 
 
130
                        values (new.f120, new.f136, new.f144, new.f163);
 
131
        END//
 
132
        delimiter ;//
 
133
 
 
134
# Trigger exeution - single SQL Insert
 
135
        connection con2_general;
 
136
        Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 
137
        select * from db_test.t1_i order by i120;
 
138
        update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert'
 
139
                 where f122='Test 3.5.8.4';
 
140
        Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 
141
        select * from db_test.t1_i order by i120;
 
142
 
 
143
 
 
144
let $message= 3.5.8.4 - single SQL - update;
 
145
--source include/show_msg.inc
 
146
# Trigger definition - single SQL update
 
147
        connection con2_super;
 
148
        drop trigger trg2;
 
149
        Create trigger trg3 BEFORE UPDATE on tb3 for each row
 
150
                update db_test.t1_u 
 
151
                        set u120=new.f120
 
152
                        where u136=new.f136; 
 
153
 
 
154
# Trigger exeution - single SQL  - update;
 
155
        connection con2_general;
 
156
        update tb3 set f120='U', f122='Test 3.5.8.4-Single Update'
 
157
                 where f122='Test 3.5.8.4-Single Insert';
 
158
        Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 
159
        select * from db_test.t1_u order by u120;
 
160
 
 
161
 
 
162
let $message= 3.5.8.3/4 - single SQL - delete;
 
163
--source include/show_msg.inc
 
164
# Trigger definition - single SQL delete
 
165
        connection con2_super;
 
166
        drop trigger trg3;
 
167
        Create trigger trg4 AFTER UPDATE on tb3 for each row
 
168
                delete from db_test.t1_d where d136= new.f136;
 
169
 
 
170
# Trigger exeution - single SQL delete
 
171
        connection con2_general;
 
172
#lock tables tb3 write, db_test.t1_i write, db_test.t1_u write, db_test.t1_d write;
 
173
        update tb3 set f120='D', f136=444, 
 
174
                f122='Test 3.5.8.4-Single Delete'
 
175
                 where f122='Test 3.5.8.4-Single Update';
 
176
#unlock tables;
 
177
        Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 
178
        select * from db_test.t1_d order by d120;
 
179
 
 
180
 
 
181
let $message= 3.5.8.3/4 - single SQL - select;
 
182
--source include/show_msg.inc
 
183
# Trigger definition - single SQL select
 
184
        connection con2_super;
 
185
        drop trigger trg4;
 
186
        Create trigger trg5 AFTER UPDATE on tb3 for each row
 
187
                select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u 
 
188
                        where u136= new.f136; 
 
189
 
 
190
# Trigger exeution - single SQL select
 
191
        connection con2_general;
 
192
        set @test_var=0;
 
193
        update tb3 set f120='S', f136=111, 
 
194
                f122='Test 3.5.8.4-Single Select'
 
195
                 where f122='Test 3.5.8.4-Single Delete';
 
196
        Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 
197
        select @test_var;
 
198
 
 
199
#Cleanup
 
200
        connection default;
 
201
        --disable_warnings 
 
202
        drop trigger trg1;
 
203
        drop trigger trg5;
 
204
        drop database if exists db_test;
 
205
        delete from tb3 where f122 like 'Test 3.5.8.4%';
 
206
        revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
 
207
        --enable_warnings
 
208
 
 
209
 
 
210
#Section 3.5.8.5 (IF)
 
211
# Test case: Ensure that the stored procedure-specific flow control statement like IF 
 
212
#            works correctly when it is a part of the triggered action portion of a 
 
213
#            trigger definition.
 
214
let $message= Testcase 3.5.8.5 (IF):;
 
215
--source include/show_msg.inc
 
216
 
 
217
        delimiter //;
 
218
        create trigger trg2 before insert on tb3 for each row
 
219
        BEGIN
 
220
                IF new.f120='1' then
 
221
                        set @test_var='one', new.f120='2';
 
222
                ELSEIF new.f120='2' then
 
223
                        set @test_var='two', new.f120='3';
 
224
                ELSEIF new.f120='3' then
 
225
                        set @test_var='three', new.f120='4';
 
226
                END IF;
 
227
 
 
228
                IF (new.f120='4') and (new.f136=10) then
 
229
                        set @test_var2='2nd if', new.f120='d';
 
230
                ELSE 
 
231
                        set @test_var2='2nd else', new.f120='D';
 
232
                END IF;
 
233
        END//
 
234
        delimiter ;//
 
235
 
 
236
        set @test_var='Empty', @test_var2=0;
 
237
        Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101);
 
238
        select f120, f122, f136, @test_var, @test_var2 
 
239
                from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 
240
        Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102);
 
241
        select f120, f122, f136, @test_var, @test_var2 
 
242
                from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 
243
        Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10);
 
244
        select f120, f122, f136, @test_var, @test_var2 
 
245
                from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 
246
        Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103);
 
247
        select f120, f122, f136, @test_var, @test_var2 
 
248
                from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 
249
 
 
250
        delimiter //;
 
251
        --error 1064
 
252
        create trigger trg3 before update on tb3 for each row
 
253
        BEGIN
 
254
                ELSEIF new.f120='2' then
 
255
                END IF;
 
256
        END//
 
257
        --error 0, 1360
 
258
        drop trigger trg3//
 
259
 
 
260
        --error 1064
 
261
        create trigger trg4 before update on tb3 for each row
 
262
        BEGIN
 
263
                IF (new.f120='4') and (new.f136=10) then
 
264
                        set @test_var2='2nd if', new.f120='d';
 
265
                ELSE 
 
266
                        set @test_var2='2nd else', new.f120='D';
 
267
        END//
 
268
        delimiter ;//
 
269
        --error 0, 1360
 
270
        drop trigger trg4;
 
271
 
 
272
#Cleanup
 
273
        --disable_warnings 
 
274
        drop trigger trg2;
 
275
        delete from tb3 where f121='Test 3.5.8.5-if';   
 
276
        --enable_warnings
 
277
 
 
278
 
 
279
#Section 3.5.8.5 (CASE)
 
280
# Test case: Ensure that the stored procedure-specific flow control statement 
 
281
#            like CASE works correctly when it is a part of the triggered action 
 
282
#            portion of a trigger definition.
 
283
let $message= Testcase 3.5.8.5-case:;
 
284
--source include/show_msg.inc
 
285
        
 
286
        delimiter //;
 
287
        create trigger trg3 before insert on tb3 for each row
 
288
        BEGIN
 
289
                SET new.f120=char(ascii(new.f120)-32);
 
290
                CASE
 
291
                        when new.f136<100 then set new.f136=new.f136+120;
 
292
                        when new.f136<10 then set new.f144=777;
 
293
                        when new.f136>100 then set new.f120=new.f136-1;
 
294
                END case;
 
295
                CASE
 
296
                        when new.f136=200 then set @test_var=CONCAT(new.f120, '=');
 
297
                        ELSE set @test_var=concat(new.f120, '*');
 
298
                END case;
 
299
                CASE new.f144
 
300
                        when 1 then set @test_var=concat(@test_var, 'one');
 
301
                        when 2 then set @test_var=concat(@test_var, 'two');
 
302
                        when 3 then set @test_var=concat(@test_var, 'three');
 
303
                        when 4 then set @test_var=concat(@test_var, 'four');
 
304
                        when 5 then set @test_var=concat(@test_var, 'five');
 
305
                        when 6 then set @test_var=concat(@test_var, 'six');
 
306
                        when 7 then set @test_var=concat(@test_var, 'seven');
 
307
                        when 8 then set @test_var=concat(@test_var, 'eight');
 
308
                        when 9 then set @test_var=concat(@test_var, 'nine');
 
309
                        when 10 then set @test_var=concat(@test_var, 'ten');
 
310
                        when 11 then set @test_var=concat(@test_var, 'eleven');
 
311
                        when 12 then set @test_var=concat(@test_var, 'twelve');
 
312
                        when 13 then set @test_var=concat(@test_var, 'thirteen');
 
313
                        when 14 then set @test_var=concat(@test_var, 'fourteen');
 
314
                        when 15 then set @test_var=concat(@test_var, 'fifteen');
 
315
                        ELSE set @test_var=CONCAT(new.f120, '*', new.f144);
 
316
                END case;
 
317
        END//
 
318
        delimiter ;//
 
319
 
 
320
        set @test_var='Empty';
 
321
        Insert into tb3 (f120, f122, f136, f144) 
 
322
                values ('a', 'Test 3.5.8.5-case', 5, 7);
 
323
        select f120, f122, f136, f144, @test_var 
 
324
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
325
        Insert into tb3 (f120, f122, f136, f144) 
 
326
                values ('b', 'Test 3.5.8.5-case', 71,16);
 
327
        select f120, f122, f136, f144, @test_var 
 
328
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
329
        Insert into tb3 (f120, f122, f136, f144) 
 
330
                values ('c', 'Test 3.5.8.5-case', 80,1);
 
331
        select f120, f122, f136, f144, @test_var 
 
332
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
333
        Insert into tb3 (f120, f122, f136) 
 
334
                values ('d', 'Test 3.5.8.5-case', 152);
 
335
        select f120, f122, f136, f144, @test_var 
 
336
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
337
        Insert into tb3 (f120, f122, f136, f144) 
 
338
                values ('e', 'Test 3.5.8.5-case', 200, 8);
 
339
        select f120, f122, f136, f144, @test_var 
 
340
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
341
        --error 0, 1339
 
342
        Insert into tb3 (f120, f122, f136, f144) 
 
343
                values ('f', 'Test 3.5.8.5-case', 100, 8);
 
344
        select f120, f122, f136, f144, @test_var 
 
345
                from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 
346
 
 
347
        delimiter //;
 
348
        --error 1064
 
349
        create trigger trg3a before update on tb3 for each row
 
350
        BEGIN
 
351
                CASE
 
352
                        when new.f136<100 then set new.f120='p';
 
353
        END//
 
354
        delimiter ;//
 
355
 
 
356
        --error 0, 1360
 
357
        drop trigger trg3a;
 
358
 
 
359
#Cleanup
 
360
        --disable_warnings 
 
361
        drop trigger trg3;
 
362
        delete from tb3 where f121='Test 3.5.8.5-case'; 
 
363
        --enable_warnings
 
364
 
 
365
#Section 3.5.8.5 (LOOP)
 
366
# Test case: Ensure that the stored procedure-specific flow control
 
367
#            statement like LOOP / LEAVE work correctly when they are
 
368
#            part of the triggered action portion of a trigger definition.
 
369
let $message= Testcase 3.5.8.5-loop/leave:;
 
370
--source include/show_msg.inc
 
371
                
 
372
        delimiter //;
 
373
        Create trigger trg4 after insert on tb3 for each row
 
374
        BEGIN 
 
375
                set @counter=0, @flag='Initial';
 
376
                Label1: loop 
 
377
                        if new.f136<new.f144 then
 
378
                                set @counter='Nothing to loop';
 
379
                                leave Label1; 
 
380
                        else
 
381
                                set @counter=@counter+1;
 
382
                                if new.f136=new.f144+@counter then
 
383
                                        set @counter=concat(@counter, ' loops');
 
384
                                        leave Label1;
 
385
                                end if; 
 
386
                        end if; 
 
387
                        iterate label1; 
 
388
                        set @flag='Final';
 
389
                END loop Label1; 
 
390
        END//
 
391
        delimiter ;//
 
392
        Insert into tb3 (f122, f136, f144) 
 
393
                values ('Test 3.5.8.5-loop', 2, 8);
 
394
                select @counter, @flag;
 
395
        Insert into tb3 (f122, f136, f144) 
 
396
                values ('Test 3.5.8.5-loop', 11, 8);
 
397
                select @counter, @flag;
 
398
 
 
399
 
 
400
        delimiter //;
 
401
 
 
402
        --error 1064
 
403
        Create trigger trg4_2 after update on tb3 for each row
 
404
        BEGIN 
 
405
                Label1: loop 
 
406
                        set @counter=@counter+1;
 
407
                END;  
 
408
        END//
 
409
        delimiter ;//
 
410
        --error 0, 1360
 
411
        drop trigger trg4_2;
 
412
 
 
413
#Cleanup
 
414
        --disable_warnings 
 
415
        drop trigger trg4;
 
416
        delete from tb3 where f122='Test 3.5.8.5-loop';
 
417
        --enable_warnings
 
418
 
 
419
#Section 3.5.8.5 (REPEAT ITERATE)
 
420
#Testcase: Ensure that the stored procedure-specific flow control statements 
 
421
#          like REPEAT work correctly when they are part of the triggered action
 
422
#          portion of a trigger definition.
 
423
let $message= Testcase 3.5.8.5-repeat:;
 
424
--source include/show_msg.inc
 
425
                        
 
426
        delimiter //;
 
427
        Create trigger trg6 after insert on tb3 for each row
 
428
        BEGIN
 
429
                rp_label: REPEAT 
 
430
                        SET @counter1 = @counter1 + 1; 
 
431
                        IF (@counter1 MOD 2 = 0) THEN ITERATE rp_label;         
 
432
                        END IF;
 
433
                        SET @counter2 = @counter2 + 1; 
 
434
                UNTIL @counter1> new.f136 END REPEAT rp_label;
 
435
        END//
 
436
        delimiter ;//
 
437
 
 
438
        set @counter1= 0, @counter2= 0;
 
439
        Insert into tb3 (f122, f136) 
 
440
                values ('Test 3.5.8.5-repeat', 13);
 
441
        select @counter1, @counter2;
 
442
 
 
443
                        
 
444
        delimiter //;
 
445
        --error 1064 
 
446
        Create trigger trg6_2 after update on tb3 for each row
 
447
        BEGIN
 
448
                REPEAT 
 
449
                        SET @counter2 = @counter2 + 1; 
 
450
        END//
 
451
        delimiter ;//
 
452
 
 
453
#Cleanup                        
 
454
        --disable_warnings 
 
455
        drop trigger trg6;
 
456
        delete from tb3 where f122='Test 3.5.8.5-repeat';
 
457
        --enable_warnings
 
458
 
 
459
 
 
460
#Section 3.5.8.5 (WHILE)
 
461
# Test case: Ensure that the stored procedure-specific flow control 
 
462
#            statements WHILE, work correctly when they are part of 
 
463
#            the triggered action portion of a trigger definition.
 
464
let $message= Testcase 3.5.8.5-while:;
 
465
--source include/show_msg.inc
 
466
 
 
467
        delimiter //;
 
468
        Create trigger trg7 after insert on tb3 for each row
 
469
                wl_label: WHILE @counter1 < new.f136 DO 
 
470
                        SET @counter1 = @counter1 + 1; 
 
471
                        IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label;         
 
472
                        END IF;
 
473
                        SET @counter2 = @counter2 + 1; 
 
474
                END WHILE wl_label//
 
475
        delimiter ;//
 
476
 
 
477
        set @counter1= 0, @counter2= 0;
 
478
        Insert into tb3 (f122, f136) 
 
479
                values ('Test 3.5.8.5-while', 7);
 
480
        select @counter1, @counter2;
 
481
        delimiter //;
 
482
        --error 1064 
 
483
        Create trigger trg7_2 after update on tb3 for each row
 
484
        BEGIN
 
485
                WHILE @counter1 < new.f136 
 
486
                        SET @counter1 = @counter1 + 1; 
 
487
        END//
 
488
        delimiter ;//
 
489
 
 
490
#Cleanup
 
491
        --disable_warnings 
 
492
        delete from tb3 where f122='Test 3.5.8.5-while';
 
493
        drop trigger trg7;
 
494
        --enable_warnings
 
495
 
 
496
#Section 3.5.8.6
 
497
# Test case: Ensure that a trigger definition that includes a CALL to a stored 
 
498
#            procedure fails, at CREATE TRIGGER time, with an appropriate error 
 
499
#            message. Not more valid requirement.
 
500
let $message= Testcase 3.5.8.6: (requirement void);
 
501
--source include/show_msg.inc
 
502
        delimiter //;
 
503
        CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END//
 
504
 
 
505
        CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW
 
506
        BEGIN
 
507
                CALL sp_01 ();
 
508
        END//
 
509
        delimiter ;//
 
510
        Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101);
 
511
        update tb3 set f120='S', f136=111,
 
512
               f122='Test 3.5.8.6-tr8_1'
 
513
               where f122='Test 3.5.8.6-insert';
 
514
        select f120, f122
 
515
               from tb3 where f122  like 'Test 3.5.8.6%' order by f120;
 
516
        DROP TRIGGER trg8_1;
 
517
        DROP PROCEDURE sp_01;
 
518
 
 
519
 
 
520
#Section 3.5.8.7
 
521
# Test case: Ensure that a trigger definition that includes a 
 
522
#            transaction-delimiting statement (e.g. COMMIT, 
 
523
#            ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER 
 
524
#            time, with an appropriate error message.
 
525
let $message= Testcase 3.5.8.7;
 
526
--source include/show_msg.inc
 
527
        
 
528
        delimiter //;
 
529
        --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG 
 
530
        Create trigger trg9_1 before update on tb3 for each row
 
531
        BEGIN
 
532
                Start transaction;
 
533
                        Set new.f120='U';
 
534
                Commit;
 
535
        END//
 
536
 
 
537
        --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG 
 
538
        Create trigger trg9_2 before delete on tb3 for each row
 
539
        BEGIN
 
540
                Start transaction;
 
541
                        Set @var2=old.f120;
 
542
                Rollback;
 
543
        END//
 
544
        delimiter ;//
 
545
 
 
546
 
 
547
# Cleanup section 3.5
 
548
        connection default;
 
549
        drop user test_general@localhost;
 
550
        drop user test_general;
 
551
        drop user test_super@localhost;
 
552
 
 
553