1
by brian
clean slate |
1 |
#====================================================================== |
2 |
#
|
|
3 |
# Trigger Tests |
|
4 |
# (test case numbering refer to requirement document TP v1.1) |
|
5 |
#====================================================================== |
|
6 |
||
7 |
--disable_abort_on_error |
|
8 |
||
9 |
# General setup for Trigger tests |
|
10 |
let $message= Testcase: 3.5:; |
|
11 |
--source include/show_msg.inc |
|
12 |
||
13 |
--disable_abort_on_error |
|
14 |
||
15 |
create User test_general@localhost; |
|
16 |
set password for test_general@localhost = password('PWD'); |
|
17 |
revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost; |
|
18 |
||
19 |
create User test_super@localhost; |
|
20 |
set password for test_super@localhost = password('PWD'); |
|
21 |
grant ALL on *.* to test_super@localhost with grant OPTION; |
|
22 |
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK |
|
23 |
connect (con1_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); |
|
24 |
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK |
|
25 |
connect (con1_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); |
|
26 |
connection default; |
|
27 |
||
28 |
####################################
|
|
29 |
############ Section 3.5.4 ######### |
|
30 |
# Drop Trigger Checkes: # |
|
31 |
####################################
|
|
32 |
let $message= Testcase 3.5.4:; |
|
33 |
--source include/show_msg.inc |
|
34 |
||
35 |
connection default; |
|
36 |
use test; |
|
37 |
||
38 |
#Section 3.5.4.1 |
|
39 |
# Testcase: Ensure that the DROP TRIGGER statement cleanly drops its target trigger. |
|
40 |
let $message= Testcase 3.5.4.1:; |
|
41 |
--source include/show_msg.inc |
|
42 |
||
43 |
connection con1_super; |
|
44 |
create database db_drop; |
|
45 |
Use db_drop; |
|
46 |
eval create table t1 (f1 char(30)) engine=$engine_type; |
|
47 |
grant INSERT, SELECT on db_drop.t1 to test_general; |
|
48 |
Use db_drop; |
|
49 |
Create trigger trg1 BEFORE INSERT on t1 |
|
50 |
for each row set new.f1='Trigger 3.5.4.1'; |
|
51 |
connection con1_general; |
|
52 |
Use db_drop; |
|
53 |
Insert into t1 values ('Insert error 3.5.4.1'); |
|
54 |
Select * from t1 order by f1; |
|
55 |
connection con1_super; |
|
56 |
drop trigger trg1; |
|
57 |
select trigger_schema, trigger_name, event_object_table |
|
58 |
from information_schema.triggers order by trigger_name; |
|
59 |
connection con1_general; |
|
60 |
Insert into t1 values ('Insert no trigger 3.5.4.1'); |
|
61 |
Select * from t1 order by f1; |
|
62 |
||
63 |
#Cleanup |
|
64 |
--disable_warnings |
|
65 |
connection con1_super; |
|
66 |
--disable_warnings |
|
67 |
--error 0,1360 |
|
68 |
drop trigger trg1; |
|
69 |
drop database if exists db_drop; |
|
70 |
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; |
|
71 |
--enable_warnings |
|
72 |
||
73 |
#Section 3.5.4.2 |
|
74 |
# Test case: Ensure that DROP TRIGGER <trigger name> fails, with an appropriate error |
|
75 |
# message, if the trigger name does not exist. |
|
76 |
let $message= Testcase 3.5.4.2:; |
|
77 |
--source include/show_msg.inc |
|
78 |
||
79 |
connection con1_super; |
|
80 |
create database db_drop2; |
|
81 |
Use db_drop2; |
|
82 |
--disable_warnings |
|
83 |
drop table if exists t1_432 ; |
|
84 |
--enable_warnings |
|
85 |
eval create table t1_432 (f1 char (30)) engine=$engine_type; |
|
86 |
--error 1360 |
|
87 |
Drop trigger tr_does_not_exit; |
|
88 |
#cleanup |
|
89 |
--disable_warnings |
|
90 |
drop table if exists t1_432 ; |
|
91 |
drop database if exists db_drop2; |
|
92 |
--enable_warnings |
|
93 |
||
94 |
#Section 3.5.4.3 |
|
95 |
# Test case: Ensure that DROP TRIGGER <trigger name> fails, with an appropriate |
|
96 |
# error message, if <trigger name> is not a qualified name. |
|
97 |
let $message= Testcase 3.5.4.3:; |
|
98 |
--source include/show_msg.inc |
|
99 |
||
100 |
connection con1_super; |
|
101 |
create database db_drop3; |
|
102 |
Use db_drop3; |
|
103 |
--disable_warnings |
|
104 |
drop table if exists t1_433 ; |
|
105 |
drop table if exists t1_433a ; |
|
106 |
--enable_warnings |
|
107 |
eval create table t1_433 (f1 char (30)) engine=$engine_type; |
|
108 |
eval create table t1_433a (f1a char (5)) engine=$engine_type; |
|
109 |
||
110 |
CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row |
|
111 |
set new.f1 = 'Trigger 3.5.4.3'; |
|
112 |
||
113 |
# Using table |
|
114 |
--error 1064 |
|
115 |
Drop trigger t1.433.trg3; |
|
116 |
||
117 |
# Using database.table |
|
118 |
--error 1064 |
|
119 |
Drop trigger db_drop3.t1.433.trg3; |
|
120 |
||
121 |
# wrong database |
|
122 |
--error 1360 |
|
123 |
Drop trigger mysql.trg3; |
|
124 |
||
125 |
# database does not exist |
|
126 |
--error 1360 |
|
127 |
Drop trigger tbx.trg3; |
|
128 |
||
129 |
#cleanup |
|
130 |
Drop trigger db_drop3.trg3; |
|
131 |
drop table if exists t1_433; |
|
132 |
drop table if exists t1_433a; |
|
133 |
drop database if exists db_drop3; |
|
134 |
||
135 |
#Section 3.5.4.4 |
|
136 |
# Test case: Ensure that when a database is dropped, all triggers created within |
|
137 |
# that database are also cleanly dropped. |
|
138 |
let $message= Testcase 3.5.4.4:; |
|
139 |
--source include/show_msg.inc |
|
140 |
||
141 |
connection con1_super; |
|
142 |
create database db_drop4; |
|
143 |
Use db_drop4; |
|
144 |
eval create table t1 (f1 char(30)) engine=$engine_type; |
|
145 |
grant INSERT, SELECT on db_drop4.t1 to test_general; |
|
146 |
Create trigger trg4 BEFORE INSERT on t1 |
|
147 |
for each row set new.f1='Trigger 3.5.4.4'; |
|
148 |
connection con1_general; |
|
149 |
Use db_drop4; |
|
150 |
Insert into t1 values ('Insert 3.5.4.4'); |
|
151 |
Select * from t1; |
|
152 |
connection con1_super; |
|
153 |
Drop database db_drop4; |
|
154 |
Show databases; |
|
155 |
select trigger_schema, trigger_name, event_object_table |
|
156 |
from information_schema.triggers |
|
157 |
where information_schema.triggers.trigger_name='trg4'; |
|
158 |
create database db_drop4; |
|
159 |
Use db_drop4; |
|
160 |
eval create table t1 (f1 char(30)) engine=$engine_type; |
|
161 |
grant INSERT, SELECT on db_drop4.t1 to test_general; |
|
162 |
connection con1_general; |
|
163 |
Insert into t1 values ('2nd Insert 3.5.4.4'); |
|
164 |
Select * from t1; |
|
165 |
||
166 |
#Cleanup |
|
167 |
connection con1_super; |
|
168 |
--disable_warnings |
|
169 |
--error 1360 |
|
170 |
drop trigger trg4; |
|
171 |
drop database if exists db_drop4; |
|
172 |
--enable_warnings |
|
173 |
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; |
|
174 |
||
175 |
#Section 3.5.4.5 |
|
176 |
# Test case: Ensure that when a table is dropped, all triggers for which it is the |
|
177 |
# subject table are also cleanly dropped. |
|
178 |
let $message= Testcase 3.5.4.5:; |
|
179 |
--source include/show_msg.inc |
|
180 |
||
181 |
connection con1_super; |
|
182 |
create database db_drop5; |
|
183 |
Use db_drop5; |
|
184 |
eval create table t1 (f1 char(50)) engine=$engine_type; |
|
185 |
grant INSERT, SELECT on t1 to test_general; |
|
186 |
Create trigger trg5 BEFORE INSERT on t1 |
|
187 |
for each row set new.f1='Trigger 3.5.4.5'; |
|
188 |
connection con1_general; |
|
189 |
Use db_drop5; |
|
190 |
Insert into t1 values ('Insert 3.5.4.5'); |
|
191 |
Select * from t1; |
|
192 |
connection con1_super; |
|
193 |
Drop table t1; |
|
194 |
Show tables; |
|
195 |
select trigger_schema, trigger_name, event_object_table |
|
196 |
from information_schema.triggers |
|
197 |
where information_schema.triggers.trigger_name='trg5'; |
|
198 |
eval create table t1 (f1 char(50)) engine=$engine_type; |
|
199 |
grant INSERT, SELECT on t1 to test_general; |
|
200 |
connection con1_general; |
|
201 |
Insert into t1 values ('2nd Insert 3.5.4.5'); |
|
202 |
Select * from t1; |
|
203 |
||
204 |
#Cleanup |
|
205 |
connection con1_super; |
|
206 |
--disable_warnings |
|
207 |
--error 1360 |
|
208 |
drop trigger trg5; |
|
209 |
drop database if exists db_drop5; |
|
210 |
--enable_warnings |
|
211 |
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; |
|
212 |
||
213 |
||
214 |
##################################
|
|
215 |
######### Section 3.5.5 ########## |
|
216 |
# Checks on the Subject Table # |
|
217 |
##################################
|
|
218 |
||
219 |
let $message= Testcase 3.5.5:; |
|
220 |
--source include/show_msg.inc |
|
221 |
||
222 |
connection default; |
|
223 |
use test; |
|
224 |
||
225 |
#Section 3.5.5.1 |
|
226 |
# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent |
|
227 |
# subject table, the statement fails with an appropriate error message. |
|
228 |
let $message= Testcase 3.5.5.1:; |
|
229 |
--source include/show_msg.inc |
|
230 |
||
231 |
--error 1146 |
|
232 |
Create trigger trg1 before INSERT on t100 for each row set new.f2=1000; |
|
233 |
||
234 |
||
235 |
#Section 3.5.5.2 |
|
236 |
# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table |
|
237 |
# as the subject table, the statement fails with an appropriate error message. |
|
238 |
let $message= Testcase 3.5.5.2:; |
|
239 |
--source include/show_msg.inc |
|
240 |
||
241 |
Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); |
|
242 |
||
243 |
--error 1361 |
|
244 |
Create trigger trg2 before INSERT |
|
245 |
on t1_temp for each row set new.f2=9999; |
|
246 |
||
247 |
#Cleanup |
|
248 |
--disable_warnings |
|
249 |
drop table t1_temp; |
|
250 |
--enable_warnings |
|
251 |
||
252 |
||
253 |
#Section 3.5.5.3 |
|
254 |
# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject |
|
255 |
# table, the statement fails with an appropriate error message. |
|
256 |
let $message= Testcase 3.5.5.3:; |
|
257 |
--source include/show_msg.inc |
|
258 |
||
259 |
Create view vw3 as select f118 from tb3; |
|
260 |
||
261 |
# OBN Not sure why the server is returning error 1347 |
|
262 |
--error 1347 |
|
263 |
Create trigger trg3 before INSERT |
|
264 |
on vw3 for each row set new.f118='s'; |
|
265 |
||
266 |
#Cleanup |
|
267 |
--disable_warnings |
|
268 |
drop view vw3; |
|
269 |
--enable_warnings |
|
270 |
||
271 |
||
272 |
#Section 3.5.5.4 |
|
273 |
# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides |
|
274 |
# in a different database than in which the trigger will reside, the |
|
275 |
# statement fails with an appropriate error message; that is, ensure that |
|
276 |
# the trigger and its subject table must reside in the same database. |
|
277 |
let $message= Testcase 3.5.5.4:; |
|
278 |
--source include/show_msg.inc |
|
279 |
||
280 |
connection con1_super; |
|
281 |
create database dbtest_one; |
|
282 |
create database dbtest_two; |
|
283 |
use dbtest_two; |
|
284 |
eval create table t2 (f1 char(15)) engine=$engine_type; |
|
285 |
use dbtest_one; |
|
286 |
--error 1435 |
|
287 |
create trigger trg4 before INSERT |
|
288 |
on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4'; |
|
289 |
grant INSERT, SELECT on dbtest_two.t2 to test_general; |
|
290 |
grant SELECT on dbtest_one.* to test_general; |
|
291 |
connection con1_general; |
|
292 |
use dbtest_two; |
|
293 |
Insert into t2 values ('1st Insert 3.5.5.4'); |
|
294 |
Select * from t2; |
|
295 |
use dbtest_one; |
|
296 |
Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); |
|
297 |
Select * from dbtest_two.t2 order by f1; |
|
298 |
||
299 |
#Cleanup |
|
300 |
connection con1_super; |
|
301 |
--disable_warnings |
|
302 |
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; |
|
303 |
DROP DATABASE if exists dbtest_one; |
|
304 |
drop database if EXISTS dbtest_two; |
|
305 |
--enable_warnings |
|
306 |
||
307 |
#####################################
|
|
308 |
########### Section 3.5.6 ########### |
|
309 |
# Check on the Trigger Action Time # |
|
310 |
#####################################
|
|
311 |
||
312 |
let $message= Testcase 3.5.6:; |
|
313 |
--source include/show_msg.inc |
|
314 |
||
315 |
connection default; |
|
316 |
use test; |
|
317 |
||
318 |
#Section 3.5.6.1 |
|
319 |
# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. |
|
320 |
# See section 3.5.1.1 |
|
321 |
let $message= Testcase 3.5.6.1 (see Testcase 3.5.1.1); |
|
322 |
--source include/show_msg.inc |
|
323 |
||
324 |
#Section 3.5.6.2 |
|
325 |
# Test case: Ensure that a trigger definition can specify a trigger action time of AFTER. |
|
326 |
# See section 3.5.1.1 |
|
327 |
let $message= Testcase 3.5.6.2 (see Testcase 3.5.1.1); |
|
328 |
--source include/show_msg.inc |
|
329 |
||
330 |
#Section 3.5.6.3 |
|
331 |
# Test case: Ensure that a trigger definition that specifies a trigger action |
|
332 |
# time that is not either BEFORE or AFTER fails, with an appropriate |
|
333 |
# error message, at CREATE TRIGGER time. |
|
334 |
let $message= Testcase 3.5.6.3:; |
|
335 |
--source include/show_msg.inc |
|
336 |
||
337 |
--error 1064 |
|
338 |
Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25; |
|
339 |
--error 1064 |
|
340 |
Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15; |
|
341 |
||
342 |
#Cleanup |
|
343 |
# OBN - Although none of the above should have been created we should do a cleanup |
|
344 |
# since if they have been created, not dropping them will affect following |
|
345 |
# tests. |
|
346 |
--disable_warnings |
|
347 |
--error 0, 1360 |
|
348 |
drop trigger tb3.trg3_1; |
|
349 |
--error 0, 1360 |
|
350 |
drop trigger tb3.trg3_2; |
|
351 |
--enable_warnings |
|
352 |
||
353 |
#Section 3.5.6.4 |
|
354 |
# Test case: Ensure that a trigger defined with a trigger action time of BEFORE |
|
355 |
# always executes its triggered action immediately before the trigger event. |
|
356 |
# See section 3.5.1.1 |
|
357 |
let $message= Testcase 3.5.6.4 (see Testcase 3.5.1.1); |
|
358 |
--source include/show_msg.inc |
|
359 |
||
360 |
#Section 3.5.6.5 |
|
361 |
# Test case: Ensure that a trigger defined with a trigger action time of AFTER |
|
362 |
# always executes its triggered action immediately after the trigger event. |
|
363 |
let $message= Testcase 3.5.6.5 (see Testcase 3.5.1.1); |
|
364 |
--source include/show_msg.inc |
|
365 |
||
366 |
#############################
|
|
367 |
####### Section 3.5.7 ####### |
|
368 |
# Check on Trigger Event # |
|
369 |
#############################
|
|
370 |
||
371 |
#Section 3.5.7.1 |
|
372 |
#Test case: Ensure that a trigger definition can specify a trigger event of INSERT. |
|
373 |
let $message= Testcase 3.5.7.1 (see Testcase 3.5.1.1); |
|
374 |
--source include/show_msg.inc |
|
375 |
||
376 |
#Section 3.5.7.2 |
|
377 |
# Test case: Ensure that a trigger definition can specify a trigger event of UPDATE. |
|
378 |
let $message= Testcase 3.5.7.2 (see Testcase 3.5.1.1); |
|
379 |
--source include/show_msg.inc |
|
380 |
||
381 |
#Section 3.5.7.3 |
|
382 |
# Test case: Ensure that a trigger definition can specify a trigger event of DELETE. |
|
383 |
let $message= Testcase 3.5.7.3 (see Testcase 3.5.1.1); |
|
384 |
--source include/show_msg.inc |
|
385 |
||
386 |
#Section 3.5.7.4 |
|
387 |
# Test case: Ensure that a trigger definition that specifies a trigger event that |
|
388 |
# is not either INSERT, UPDATE or DELETE fails, with an appropriate error |
|
389 |
# message, at CREATE TRIGGER time. |
|
390 |
let $message= Testcase 3.5.7.4:; |
|
391 |
--source include/show_msg.inc |
|
392 |
||
393 |
--error 1064 |
|
394 |
Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5; |
|
395 |
--error 1064 |
|
396 |
Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1; |
|
397 |
||
398 |
#Cleanup |
|
399 |
# OBN - Although none of the above should have been created we should do a cleanup |
|
400 |
# since if they have been created, not dropping them will affect following |
|
401 |
# tests. |
|
402 |
--disable_warnings |
|
403 |
--error 0, 1360 |
|
404 |
drop trigger tb3.trg4_1; |
|
405 |
--error 0, 1360 |
|
406 |
drop trigger tb3.trg4_2; |
|
407 |
--enable_warnings |
|
408 |
||
409 |
#Section 3.5.7.5 / 3.5.7.6 |
|
410 |
# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers |
|
411 |
# on the same table, even if the triggers have different names / different |
|
412 |
# triggered actions. |
|
413 |
let $message= Testcase 3.5.7.5 / 3.5.7.6:; |
|
414 |
--source include/show_msg.inc |
|
415 |
||
416 |
Create trigger trg5_1 BEFORE INSERT |
|
417 |
on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; |
|
418 |
||
419 |
--error ER_NOT_SUPPORTED_YET |
|
420 |
Create trigger trg5_2 BEFORE INSERT |
|
421 |
on tb3 for each row set new.f122='Trigger2 3.5.7.5'; |
|
422 |
||
423 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); |
|
424 |
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; |
|
425 |
update tb3 set f122='Update 3.5.7.6' where f121= 'Test 3.5.7.5/6'; |
|
426 |
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; |
|
427 |
||
428 |
#Cleanup |
|
429 |
--disable_warnings |
|
430 |
drop trigger trg5_1; |
|
431 |
--error 0, 1360 |
|
432 |
drop trigger trg5_2; |
|
433 |
delete from tb3 where f121='Test 3.5.7.5/6'; |
|
434 |
--enable_warnings |
|
435 |
||
436 |
||
437 |
#Section 3.5.7.7 / 3.5.7.8 |
|
438 |
# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers |
|
439 |
# on the same table, even if the triggers have different names / different |
|
440 |
# triggered actions. |
|
441 |
let $message= Testcase 3.5.7.7 / 3.5.7.8:; |
|
442 |
--source include/show_msg.inc |
|
443 |
||
444 |
set @test_var='Before trig 3.5.7.7'; |
|
445 |
Create trigger trg6_1 AFTER INSERT |
|
446 |
on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; |
|
447 |
||
448 |
--error ER_NOT_SUPPORTED_YET |
|
449 |
Create trigger trg6_2 AFTER INSERT |
|
450 |
on tb3 for each row set @test_var='Trigger2 3.5.7.7'; |
|
451 |
||
452 |
select @test_var; |
|
453 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.7/8','Insert 3.5.7.7'); |
|
454 |
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8'; |
|
455 |
select @test_var; |
|
456 |
update tb3 set f122='Update 3.5.7.8' where f121= 'Test 3.5.7.7/8'; |
|
457 |
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8'; |
|
458 |
select @test_var; |
|
459 |
||
460 |
#Cleanup |
|
461 |
--disable_warnings |
|
462 |
drop trigger trg6_1; |
|
463 |
--error 0, 1360 |
|
464 |
drop trigger trg6_2; |
|
465 |
delete from tb3 where f121='Test 3.5.7.7/8'; |
|
466 |
--enable_warnings |
|
467 |
||
468 |
||
469 |
#Section 3.5.7.9 / 3.5.7.10 |
|
470 |
# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers |
|
471 |
# on the same table, even if the triggers have different names / different |
|
472 |
# triggered actions. |
|
473 |
let $message= Testcase 3.5.7.9/10:; |
|
474 |
--source include/show_msg.inc |
|
475 |
||
476 |
Create trigger trg7_1 BEFORE UPDATE |
|
477 |
on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; |
|
478 |
||
479 |
--error ER_NOT_SUPPORTED_YET |
|
480 |
Create trigger trg7_2 BEFORE UPDATE |
|
481 |
on tb3 for each row set new.f122='Trigger2 3.5.7.9'; |
|
482 |
||
483 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); |
|
484 |
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; |
|
485 |
update tb3 set f122='update 3.5.7.10' where f121='Test 3.5.7.9/10'; |
|
486 |
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; |
|
487 |
||
488 |
#Cleanup |
|
489 |
--disable_warnings |
|
490 |
drop trigger trg7_1; |
|
491 |
--error 0, 1360 |
|
492 |
drop trigger trg7_2; |
|
493 |
delete from tb3 where f121='Test 3.5.7.9/10'; |
|
494 |
||
495 |
#Section 3.5.7.11 / 3.5.7.12 |
|
496 |
# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers |
|
497 |
# on the same table, even if the triggers have different names / different |
|
498 |
# triggered actions. |
|
499 |
let $message= Testcase 3.5.7.11/12:; |
|
500 |
--source include/show_msg.inc |
|
501 |
||
502 |
set @test_var='Before trig 3.5.7.11'; |
|
503 |
Create trigger trg8_1 AFTER UPDATE |
|
504 |
on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; |
|
505 |
||
506 |
--error ER_NOT_SUPPORTED_YET |
|
507 |
Create trigger trg8_2 AFTER UPDATE |
|
508 |
on tb3 for each row set @test_var='Trigger2 3.5.7.11'; |
|
509 |
||
510 |
||
511 |
select @test_var; |
|
512 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.11/12','Insert 3.5.7.11/12'); |
|
513 |
select @test_var; |
|
514 |
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12'; |
|
515 |
update tb3 set f122='update 3.5.7.12' where f121='Test 3.5.7.11/12'; |
|
516 |
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12'; |
|
517 |
select @test_var; |
|
518 |
delete from tb3 where f121='Test 3.5.7.11/12'; |
|
519 |
||
520 |
#Cleanup |
|
521 |
--disable_warnings |
|
522 |
drop trigger trg8_1; |
|
523 |
--error 0, 1360 |
|
524 |
drop trigger trg8_2; |
|
525 |
delete from tb3 where f121='Test 3.5.7.11/12'; |
|
526 |
||
527 |
#Section 3.5.7.13 / 3.5.7.14 |
|
528 |
# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers |
|
529 |
# on the same table, even if the triggers have different names / different |
|
530 |
# triggered actions. |
|
531 |
let $message= Testcase 3.5.7.13/14:; |
|
532 |
--source include/show_msg.inc |
|
533 |
||
534 |
set @test_var=1; |
|
535 |
Create trigger trg9_1 BEFORE DELETE |
|
536 |
on tb3 for each row set @test_var=@test_var+1; |
|
537 |
||
538 |
--error ER_NOT_SUPPORTED_YET |
|
539 |
Create trigger trg9_2 BEFORE DELETE |
|
540 |
on tb3 for each row set @test_var=@test_var+10; |
|
541 |
||
542 |
select @test_var; |
|
543 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.13/14','Insert 3.5.7.13'); |
|
544 |
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14'; |
|
545 |
select @test_var; |
|
546 |
delete from tb3 where f121='Test 3.5.7.13/14'; |
|
547 |
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14'; |
|
548 |
select @test_var; |
|
549 |
delete from tb3 where f121='Test 3.5.7.13/14'; |
|
550 |
select @test_var; |
|
551 |
||
552 |
#Cleanup |
|
553 |
--disable_warnings |
|
554 |
drop trigger trg9_1; |
|
555 |
--error 0, 1360 |
|
556 |
drop trigger trg9_2; |
|
557 |
delete from tb3 where f121='Test 3.5.7.13/14'; |
|
558 |
||
559 |
#Section 3.5.7.15 / 3.5.7.16 |
|
560 |
# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers |
|
561 |
# on the same table, even if the triggers have different names / different |
|
562 |
# triggered actions. |
|
563 |
let $message= Testcase 3.5.7.15/16:; |
|
564 |
--source include/show_msg.inc |
|
565 |
||
566 |
set @test_var=1; |
|
567 |
Create trigger trg_3_406010_1 AFTER DELETE |
|
568 |
on tb3 for each row set @test_var=@test_var+5; |
|
569 |
||
570 |
--error ER_NOT_SUPPORTED_YET |
|
571 |
Create trigger trg_3_406010_2 AFTER DELETE |
|
572 |
on tb3 for each row set @test_var=@test_var+50; |
|
573 |
||
574 |
--error 1359 |
|
575 |
Create trigger trg_3_406010_1 AFTER INSERT |
|
576 |
on tb3 for each row set @test_var=@test_var+1; |
|
577 |
||
578 |
select @test_var; |
|
579 |
Insert into tb3 (f121,f122) values ('Test 3.5.7.15/16','Insert 3.5.7.15/16'); |
|
580 |
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16'; |
|
581 |
select @test_var; |
|
582 |
delete from tb3 where f121='Test 3.5.7.15/16'; |
|
583 |
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16'; |
|
584 |
select @test_var; |
|
585 |
delete from tb3 where f121='Test 3.5.7.15/16'; |
|
586 |
select @test_var; |
|
587 |
||
588 |
#Cleanup |
|
589 |
--disable_warnings |
|
590 |
drop trigger trg_3_406010_1; |
|
591 |
--error 0, 1360 |
|
592 |
drop trigger trg_3_406010_2; |
|
593 |
delete from tb3 where f121='Test 3.5.7.15/16'; |
|
594 |
--enable_warnings |
|
595 |
||
596 |
||
597 |
#Section 3.5.7.17 |
|
598 |
# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, |
|
599 |
# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE |
|
600 |
# trigger on the same table; that is, ensure that every persistent base |
|
601 |
# table may be the subject table for exactly six triggers |
|
602 |
let $message= Testcase 3.5.7.17 (see Testcase 3.5.1.1); |
|
603 |
--source include/show_msg.inc |
|
604 |
||
605 |
||
606 |
# Cleanup section 3.5 |
|
607 |
connection default; |
|
608 |
drop user test_general@localhost; |
|
609 |
drop user test_general; |
|
610 |
drop user test_super@localhost; |
|
611 |