<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=SQL_Server%2FT-SQL%2FTransact_SQL%2FRAISERROR</id>
		<title>SQL Server/T-SQL/Transact SQL/RAISERROR - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=SQL_Server%2FT-SQL%2FTransact_SQL%2FRAISERROR"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL_Server/T-SQL/Transact_SQL/RAISERROR&amp;action=history"/>
		<updated>2026-04-06T08:44:00Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=SQL_Server/T-SQL/Transact_SQL/RAISERROR&amp;diff=5722&amp;oldid=prev</id>
		<title> в 13:46, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL_Server/T-SQL/Transact_SQL/RAISERROR&amp;diff=5722&amp;oldid=prev"/>
				<updated>2010-05-26T13:46:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:46, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=SQL_Server/T-SQL/Transact_SQL/RAISERROR&amp;diff=5723&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL_Server/T-SQL/Transact_SQL/RAISERROR&amp;diff=5723&amp;oldid=prev"/>
				<updated>2010-05-26T10:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Creating a Trigger and raise an error==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
1&amp;gt; create table employee(&lt;br /&gt;
2&amp;gt;     ID          int,&lt;br /&gt;
3&amp;gt;     name        nvarchar (10),&lt;br /&gt;
4&amp;gt;     salary      int )&lt;br /&gt;
5&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; create table job(&lt;br /&gt;
3&amp;gt;     ID              int,&lt;br /&gt;
4&amp;gt;     title nvarchar  (10),&lt;br /&gt;
5&amp;gt;     averageSalary   int)&lt;br /&gt;
6&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
3&amp;gt; insert into employee (ID, name, salary) values (1,  &amp;quot;Jason&amp;quot;, 1234)&lt;br /&gt;
4&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (2,  &amp;quot;Robert&amp;quot;, 4321)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (3,  &amp;quot;Celia&amp;quot;, 5432)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (4,  &amp;quot;Linda&amp;quot;, 3456)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (5,  &amp;quot;David&amp;quot;, 7654)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (6,  &amp;quot;James&amp;quot;, 4567)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (7,  &amp;quot;Alison&amp;quot;, 8744)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (8,  &amp;quot;Chris&amp;quot;, 9875)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into employee (ID, name, salary) values (9,  &amp;quot;Mary&amp;quot;, 2345)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; insert into job(ID, title, averageSalary) values(1,&amp;quot;Developer&amp;quot;,3000)&lt;br /&gt;
3&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into job(ID, title, averageSalary) values(2,&amp;quot;Tester&amp;quot;, 4000)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into job(ID, title, averageSalary) values(3,&amp;quot;Designer&amp;quot;, 5000)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt; insert into job(ID, title, averageSalary) values(4,&amp;quot;Programmer&amp;quot;, 6000)&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
(1 rows affected)&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
3&amp;gt; select * from employee;&lt;br /&gt;
4&amp;gt; GO&lt;br /&gt;
ID          name       salary&lt;br /&gt;
----------- ---------- -----------&lt;br /&gt;
          1 Jason             1234&lt;br /&gt;
          2 Robert            4321&lt;br /&gt;
          3 Celia             5432&lt;br /&gt;
          4 Linda             3456&lt;br /&gt;
          5 David             7654&lt;br /&gt;
          6 James             4567&lt;br /&gt;
          7 Alison            8744&lt;br /&gt;
          8 Chris             9875&lt;br /&gt;
          9 Mary              2345&lt;br /&gt;
(9 rows affected)&lt;br /&gt;
1&amp;gt; select * from job;&lt;br /&gt;
2&amp;gt; GO&lt;br /&gt;
ID          title      averageSalary&lt;br /&gt;
----------- ---------- -------------&lt;br /&gt;
          1 Developer           3000&lt;br /&gt;
          2 Tester              4000&lt;br /&gt;
          3 Designer            5000&lt;br /&gt;
          4 Programmer          6000&lt;br /&gt;
(4 rows affected)&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
3&amp;gt; -- Creating a Trigger&lt;br /&gt;
4&amp;gt;&lt;br /&gt;
5&amp;gt; CREATE TRIGGER tr_DelData&lt;br /&gt;
6&amp;gt; ON Employee&lt;br /&gt;
7&amp;gt; FOR DELETE&lt;br /&gt;
8&amp;gt; AS&lt;br /&gt;
9&amp;gt;     IF (SELECT Count(*) FROM job) &amp;gt; 0&lt;br /&gt;
10&amp;gt;     BEGIN&lt;br /&gt;
11&amp;gt;       RAISERROR 50009 &amp;quot;Cannot delete an employee&amp;quot;&lt;br /&gt;
12&amp;gt;       ROLLBACK TRANSACTION&lt;br /&gt;
13&amp;gt;       RETURN&lt;br /&gt;
14&amp;gt;     END&lt;br /&gt;
15&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; delete employee&lt;br /&gt;
3&amp;gt; GO&lt;br /&gt;
Msg 50009, Level 16, State 1, Server sqle\SQLEXPRESS, Procedure tr_DelData, Line 11&lt;br /&gt;
Cannot delete an employee&lt;br /&gt;
Msg 3609, Level 16, State 1, Server sqle\SQLEXPRESS, Line 2&lt;br /&gt;
The transaction ended in the trigger. The batch has been aborted.&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; select * from employee&lt;br /&gt;
3&amp;gt; GO&lt;br /&gt;
ID          name       salary&lt;br /&gt;
----------- ---------- -----------&lt;br /&gt;
          1 Jason             1234&lt;br /&gt;
          2 Robert            4321&lt;br /&gt;
          3 Celia             5432&lt;br /&gt;
          4 Linda             3456&lt;br /&gt;
          5 David             7654&lt;br /&gt;
          6 James             4567&lt;br /&gt;
          7 Alison            8744&lt;br /&gt;
          8 Chris             9875&lt;br /&gt;
          9 Mary              2345&lt;br /&gt;
(9 rows affected)&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; drop trigger tr_DelData&lt;br /&gt;
3&amp;gt; drop table employee;&lt;br /&gt;
4&amp;gt; drop table job;&lt;br /&gt;
5&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How to raise errors==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
3&amp;gt; -- Replace the default error message and numbers with my own:&lt;br /&gt;
4&amp;gt;&lt;br /&gt;
5&amp;gt; CREATE PROCEDURE spRunSQL&lt;br /&gt;
6&amp;gt;     @Statement VarChar(2000) -- Input param. accepts any SQL statement.&lt;br /&gt;
7&amp;gt; AS&lt;br /&gt;
8&amp;gt;     DECLARE   @StartTime DateTime&lt;br /&gt;
9&amp;gt;             , @EndTime DateTime&lt;br /&gt;
10&amp;gt;             , @ExecutionTime Int&lt;br /&gt;
11&amp;gt;             , @ErrNum Int&lt;br /&gt;
12&amp;gt;     SET @StartTime = GetDate()&lt;br /&gt;
13&amp;gt;     EXECUTE (@Statement)&lt;br /&gt;
14&amp;gt;     SET @ErrNum = @@Error&lt;br /&gt;
15&amp;gt;     IF @ErrNum = 207      -- Bad column&lt;br /&gt;
16&amp;gt;        RAISERROR 50001 &amp;quot;Bad column name&amp;quot;&lt;br /&gt;
17&amp;gt;     ELSE IF @ErrNum = 208     -- Bad object&lt;br /&gt;
18&amp;gt;        RAISERROR 50002 &amp;quot;Bad object name&amp;quot;&lt;br /&gt;
19&amp;gt;     ELSE IF @ErrNum = 0   -- No error. Resume.&lt;br /&gt;
20&amp;gt;        BEGIN&lt;br /&gt;
21&amp;gt;         SET @EndTime = GetDate()&lt;br /&gt;
22&amp;gt;         SET @ExecutionTime = DateDiff(MilliSecond, @StartTime, @EndTime)&lt;br /&gt;
23&amp;gt;         RETURN @ExecutionTime -- Return execution time in milliseconds&lt;br /&gt;
24&amp;gt;       END&lt;br /&gt;
25&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; EXEC spRunSQL &amp;quot;select 1 GO&amp;quot;&lt;br /&gt;
3&amp;gt; GO&lt;br /&gt;
GO&lt;br /&gt;
-----------&lt;br /&gt;
          1&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt; EXEC spRunSQL &amp;quot;selet 1 GO&amp;quot;&lt;br /&gt;
3&amp;gt; GO&lt;br /&gt;
Msg 102, Level 15, State 1, Server sqle\SQLEXPRESS, Line 1&lt;br /&gt;
Incorrect syntax near &amp;quot;GO&amp;quot;.&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
3&amp;gt; drop procedure spRunSQL&lt;br /&gt;
4&amp;gt; GO&lt;br /&gt;
1&amp;gt;&lt;br /&gt;
2&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>