1
#======================================================================
4
# (test case numbering refer to requirement document TP v1.1)
5
#======================================================================
8
#################################
9
####### Section 3.5.9 ###########
10
# Checks on old and new rows #
11
#################################
14
#Test case: Ensure that every trigger executes its triggered action on each row
15
# that meets the conditions stated in the trigger definition.
17
#Testcase: Ensure that a trigger never executes its triggered action on any row
18
# that doesn't meet the conditions stated in the trigger definition.
19
let $message= Testcase 3.5.9.1/2:;
20
--source include/show_msg.inc
22
Create trigger trg1 BEFORE UPDATE on tb3 for each row
23
set new.f142 = 94087, @counter=@counter+1;
25
select count(*) as TotalRows from tb3;
26
select count(*) as Affected from tb3 where f130<100;
27
select count(*) as NotAffected from tb3 where f130>=100;
28
select count(*) as NewValuew from tb3 where f142=94087;
31
Update tb3 Set f142='1' where f130<100;
32
select count(*) as ExpectedChanged, @counter as TrigCounter
33
from tb3 where f142=94087;
34
select count(*) as ExpectedNotChange from tb3
35
where f130<100 and f142<>94087;
36
select count(*) as NonExpectedChanged from tb3
37
where f130>=130 and f142=94087;
46
#Test case: Ensure that a reference to OLD.<column name> always correctly refers
47
# to the values of the specified column of the subject table before a
48
# data row is updated or deleted.
49
let $message= Testcase 3.5.9.3:;
50
--source include/show_msg.inc
52
Create trigger trg2_a before update on tb3 for each row
53
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
54
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
55
@tr_var_b4_163=old.f163;
57
Create trigger trg2_b after update on tb3 for each row
58
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
59
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
60
@tr_var_af_163=old.f163;
62
Create trigger trg2_c before delete on tb3 for each row
63
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
64
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
65
@tr_var_b4_163=old.f163;
67
Create trigger trg2_d after delete on tb3 for each row
68
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
69
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
70
@tr_var_af_163=old.f163;
74
set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0,
75
@tr_var_b4_136=0, @tr_var_b4_163=0;
76
set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0,
77
@tr_var_af_136=0, @tr_var_af_163=0;
78
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
79
@tr_var_b4_136, @tr_var_b4_163;
80
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
81
@tr_var_af_136, @tr_var_af_163;
84
Insert into tb3 (f122, f136, f163)
85
values ('Test 3.5.9.3', 7, 123.17);
86
Update tb3 Set f136=8 where f122='Test 3.5.9.3';
88
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
89
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
90
@tr_var_b4_136, @tr_var_b4_163;
91
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
92
@tr_var_af_136, @tr_var_af_163;
95
set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0,
96
@tr_var_b4_136=0, @tr_var_b4_163=0;
97
set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0,
98
@tr_var_af_136=0, @tr_var_af_163=0;
99
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
100
@tr_var_b4_136, @tr_var_b4_163;
101
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
102
@tr_var_af_136, @tr_var_af_163;
105
delete from tb3 where f122='Test 3.5.9.3';
107
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
108
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
109
@tr_var_b4_136, @tr_var_b4_163;
111
# select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
112
# @tr_var_af_136, @tr_var_af_163;
122
#Test case: Ensure that a reference to NEW.<column name> always correctly refers
123
# to the values of the specified column of the subject table after an
124
# existing data row has been updated or a new data row has been inserted.
125
let $message= Testcase 3.5.9.4:;
126
--source include/show_msg.inc
128
Create trigger trg3_a before insert on tb3 for each row
129
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
130
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
131
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
133
Create trigger trg3_b after insert on tb3 for each row
134
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
135
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
136
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
138
Create trigger trg3_c before update on tb3 for each row
139
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
140
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
141
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
143
Create trigger trg3_d after update on tb3 for each row
144
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
145
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
146
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
149
set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0,
150
@tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0;
151
set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0,
152
@tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0;
153
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
154
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
155
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
156
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
159
Insert into tb3 (f122, f136, f151, f163)
160
values ('Test 3.5.9.4', 7, DEFAULT, 995.24);
162
select f118, f121, f122, f136, f151, f163 from tb3
163
where f122 like 'Test 3.5.9.4%' order by f163;
164
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
165
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
166
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
167
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
170
set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0,
171
@tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0;
172
set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0,
173
@tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0;
174
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
175
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
176
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
177
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
180
--error ER_BAD_NULL_ERROR
181
Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL
182
where f122='Test 3.5.9.4';
184
Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL
185
where f122='Test 3.5.9.4';
187
select f118, f121, f122, f136, f151, f163 from tb3
188
where f122 like 'Test 3.5.9.4-trig' order by f163;
189
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
190
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
191
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
192
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
199
delete from tb3 where f122='Test 3.5.9.4-trig';
204
# Test case: Ensure that the definition of an INSERT trigger can include a
205
# reference to NEW. <Column name>.
206
let $message= Testcase 3.5.9.5: (implied in previous tests);
207
--source include/show_msg.inc
210
# Test case: Ensure that the definition of an INSERT trigger cannot include
211
# a reference to OLD. <Column name>.
212
let $message= Testcase 3.5.9.6:;
213
--source include/show_msg.inc
216
create trigger trg4a before insert on tb3 for each row
217
set @temp1= old.f120;
219
create trigger trg4b after insert on tb3 for each row
220
set old.f120= 'test';
232
# Test case: Ensure that the definition of an UPDATE trigger can include a
233
# reference to NEW. <Column name>.
234
let $message= Testcase 3.5.9.7: (implied in previous tests);
235
--source include/show_msg.inc
238
# Test case: Ensure that the definition of an UPDATE trigger cannot include a
239
# reference to OLD. <Column name>.
240
let $message= Testcase 3.5.9.8: (implied in previous tests);
241
--source include/show_msg.inc
244
# Test case: Ensure that the definition of a DELETE trigger cannot include a
245
# reference to NEW.<column name>.
246
let $message= Testcase 3.5.9.9:;
247
--source include/show_msg.inc
250
create trigger trg5a before DELETE on tb3 for each row
253
create trigger trg5b after DELETE on tb3 for each row
255
let $message= The above returns the wrong error, should be error 1362 (Bug 11648)
256
--source include/show_msg.inc
268
# Test case: Ensure that the definition of a DELETE trigger can include a reference
269
# to OLD.<column name>.
270
let $message= Testcase 3.5.9.10: (implied in previous tests);
271
--source include/show_msg.inc
275
# Testcase: Ensure that trigger definition that includes a referance to
276
# NEW.<colunm name> fails with an appropriate error message,
277
# at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE
278
let $message= Testcase 3.5.9.11: covered by 3.5.9.9;
279
--source include/show_msg.inc
283
# Testcase: Ensure that trigger definition that includes a referance to
284
# OLD.<column name> fails with an appropriate error message, at
285
# CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE
286
let $message= Testcase 3.5.9.12: covered by 3.5.9.6;
287
--source include/show_msg.inc
291
# Test case: Ensure that all references to OLD. <Column name> are read-only,
292
# that is, that they cannot be used to modify a data row.
293
let $message= Testcase 3.5.9.13:;
294
--source include/show_msg.inc
297
create trigger trg6a before UPDATE on tb3 for each row
298
set old.f118='C', new.f118='U';
300
create trigger trg6b after INSERT on tb3 for each row
301
set old.f136=163, new.f118='U';
303
create trigger trg6c after UPDATE on tb3 for each row
318
# Test case: Ensure that all references to NEW. <Column name> may be used both to
319
# read a data row and to modify a data row
320
let $message= Testcase 3.5.9.14: (implied in previous tests);
321
--source include/show_msg.inc