You are on page 1of 3

EXPERIMENT 04

create table students(rollno varchar(20), lastname varchar(20), firstname varchar(20), email


varchar(20), classyear int(10), major varchar(20), phoneno varchar(20), primary key (rollno,
phoneno,email));

desc students;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| rollno | varchar(20) | NO | PRI | | |
| lastname | varchar(20) | YES | | NULL | |
| firstname | varchar(20) | YES | | NULL | |
| email | varchar(20) | NO | PRI | | |
| classyear | int(10) | YES | | NULL | |
| major | varchar(20) | YES | | NULL | |
| phoneno | varchar(20) | NO | PRI | | |
+-----------+-------------+------+-----+---------+-------+

+--------+----------+-----------+---------+-----------+-------+------------+
| rollno | lastname | firstname | email | classyear | major | phoneno |
+--------+----------+-----------+---------+-----------+-------+------------+
| 101 | Kumar | Manish | a@b.com | 2012 | CSE | 9716982366 |
| 102 | A | K | a@k.com | 2012 | CSE | 9716982367 |
| 103 | B | G | b@g.com | 2014 | EEE | 9716982387 |
| 104 | s | K | s@k.com | 2013 | ME | 9988577206 |
+--------+----------+-----------+---------+-----------+-------+------------+

1. Create trigger t1 after insert on students for each row set @count=@count+1;

create trigger t1 after insert on students for each row set @count=(select COUNT(*) from
students);

OUTPUT:
select @count as 'TOTAL_COUNT';
+-------------+
| TOTAL_COUNT |
+-------------+
| 8 |
+-------------+

2.Create a trigger that displays a message prior to an insert operation on the students table

create trigger t2 before insert on students for each row


begin
signal sqlstate '45000' set message_text='INSERTING INTO STUDENTS TABLE';
end |

OUTPUT:
insert into students values("114","x","e","x@e.com",2013,"ECE","9781630440");|
ERROR 1644 (45000): INSERTING

create trigger t2 before insert on students for each row


begin
set @message='INSERTING INTO STUDENTS TABLE';
end |

OUTPUT:
select @message AS INFORMATION;|
+--------------------------------+
| INFORMATION |
+--------------------------------+
| INSERTING INTO STUDENTS TABLE |
+--------------------------------+

3. Create a Trigger that adds “+91” to all Phone numbers in the students table.Test and see if
the Trigger works properly by inserting and updating some data in the table.
create trigger t1 before insert on students for each row
-> begin
-> set new.phoneno = concat("+91",new.phoneno);
-> end; |
create trigger t2 before update on students for each row
-> begin
-> set new.phoneno = concat("+91",new.phoneno);
-> end; |

4. Modify the structure/create new by splitting the column name to ( First name and Last name)
and copy the values appropriately into it.

Not possible to modify structure using triggers.

5. Create a trigger that whenever an insert, update, or delete operation occurs on the students
table, a row is added to the studentlog table recording the date, user, and action.

create table studentlog (date DATE, user varchar(20), action varchar(20));|

desc studentlog;|
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| date | date | YES | | NULL | |
| user | varchar(20) | YES | | NULL | |
| action | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+

create trigger t1 before insert on students for each row


-> begin
-> insert into studentlog values(curdate(),current_user(),'inserting');
-> end;
-> |

create trigger t2 before update on students for each row


-> begin
-> insert into studentlog values(curdate(),current_user(),'updating');
-> end;
-> |

create trigger t3 before delete on students for each row


-> begin
-> insert into studentlog values(curdate(),current_user(),'deleting');
-> end;
-> |

OUTPUT:
update students set rollno=200 where phone='9780630440';
insert into students values ("119","sa","df","sa@df.com",2016,"CSE","9785630440");|
delete from students where rollno= 115;|
select * from studentlog;
+------------+----------------+-----------+
| date | user | action |
+------------+----------------+-----------+
| 2017-02-28 | root@localhost | updating |
| 2017-02-28 | root@localhost | inserting |
| 2017-02-28 | root@localhost | deleting |
| 2017-02-28 | root@localhost | deleting |
+------------+----------------+-----------+

6. Create a trigger to insert student details into student table only if classyear<2015.

create trigger t1 before insert on students for each row


-> begin
-> if(new.classyear>=2015) then
-> signal sqlstate '45000' set message_text='CLASS YEAR < 2015 REQUIRED';
-> end if;
-> end;|

OUTPUT:
insert into students values ("118","fa","ff","fa@ff.com",2015,"CSE","9786630440");|
ERROR 1644 (45000): CLASS YEAR < 2015 REQUIRED
insert into students values ("118","fa","ff","fa@ff.com",2014,"CSE","9786630440");|
Query OK, 1 row affected (0.00 sec)

7. Create a trigger to prevent any student named John to be inserted into the table.

create trigger t1 before insert on students for each row


-> begin
-> if(new.lastname ='John') then
-> signal sqlstate '45000' set message_text='John cannot be inserted';
-> elseif(new.firstname='John') then
-> signal sqlstate '45000' set message_text='John cannot be inserted';
-> end if;
-> end;
-> |

OUTPUT:
insert into students values ("118","John","ff","fa@ff.com",2015,"CSE","9786630440");|
ERROR 1644 (45000): John cannot be inserted
mysql> insert into students values ("118","fa","John","fa@ff.com",2015,"CSE","9786630440");|
ERROR 1644 (45000): John cannot be inserted
mysql> insert into students values ("118","fa","af","fa@af.com",2014,"CE","9786730440");|
Query OK, 1 row affected (0.00 sec)

8. Create a trigger to raise an exception if the rollno is changed.

create trigger t1 before update on students for each row


-> begin
-> if(old.rollno<>new.rollno)
-> signal sqlstate '45000' set message_text='Rollno cannot be changed';
-> end if;
-> end;
-> |

OUTPUT:
update students set rollno='1' where phoneno='9780630440'; |
ERROR 1644 (45000): Rollno cannot be changed

9. Create a trigger when someone tried to insert a value into a students table values are
inserted into views

Can't update table 'txt' in stored function/trigger because it is already used by statement
which invoked this stored function/trigger.

You might also like