Mega Code Archive

 
Categories / MSSQL / Transact SQL
 

Creating a Trigger and raise an error

1> create table employee( 2>     ID          int, 3>     name        nvarchar (10), 4>     salary      int ) 5> GO 1> 2> create table job( 3>     ID              int, 4>     title nvarchar  (10), 5>     averageSalary   int) 6> GO 1> 2> 3> insert into employee (ID, name, salary) values (1,  'Jason', 1234) 4> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (2,  'Robert', 4321) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (3,  'Celia', 5432) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (4,  'Linda', 3456) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (5,  'David', 7654) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (6,  'James', 4567) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (7,  'Alison', 8744) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (8,  'Chris', 9875) 2> GO (1 rows affected) 1> insert into employee (ID, name, salary) values (9,  'Mary', 2345) 2> GO (1 rows affected) 1> 2> insert into job(ID, title, averageSalary) values(1,'Developer',3000) 3> GO (1 rows affected) 1> insert into job(ID, title, averageSalary) values(2,'Tester', 4000) 2> GO (1 rows affected) 1> insert into job(ID, title, averageSalary) values(3,'Designer', 5000) 2> GO (1 rows affected) 1> insert into job(ID, title, averageSalary) values(4,'Programmer', 6000) 2> GO (1 rows affected) 1> 2> 3> select * from employee; 4> GO ID          name       salary ----------- ---------- -----------           1 Jason             1234           2 Robert            4321           3 Celia             5432           4 Linda             3456           5 David             7654           6 James             4567           7 Alison            8744           8 Chris             9875           9 Mary              2345 (9 rows affected) 1> select * from job; 2> GO ID          title      averageSalary ----------- ---------- -------------           1 Developer           3000           2 Tester              4000           3 Designer            5000           4 Programmer          6000 (4 rows affected) 1> 2> 3> -- Creating a Trigger 4> 5> CREATE TRIGGER tr_DelData 6> ON Employee 7> FOR DELETE 8> AS 9>     IF (SELECT Count(*) FROM job) > 0 10>     BEGIN 11>       RAISERROR 50009 'Cannot delete an employee' 12>       ROLLBACK TRANSACTION 13>       RETURN 14>     END 15> GO 1> 2> delete employee 3> GO Msg 50009, Level 16, State 1, Server RNTSOFT\SQLEXPRESS, Procedure tr_DelData, Line 11 Cannot delete an employee Msg 3609, Level 16, State 1, Server RNTSOFT\SQLEXPRESS, Line 2 The transaction ended in the trigger. The batch has been aborted. 1> 2> select * from employee 3> GO ID          name       salary ----------- ---------- -----------           1 Jason             1234           2 Robert            4321           3 Celia             5432           4 Linda             3456           5 David             7654           6 James             4567           7 Alison            8744           8 Chris             9875           9 Mary              2345 (9 rows affected) 1> 2> drop trigger tr_DelData 3> drop table employee; 4> drop table job; 5> GO 1>