前言:批处理是同时从应用程序发送到 SQL Server 2005 并得以执行的一组单条或多条 Transact-SQL 语句。我们通常认为当一个批处理的多条语句中有一条发生运行时错误,将停止执行批处理中当前语句和它之后的语句。这使得在实际应用批处理的过程中会产生错误的结果。实际上不同的运行时错误会导致不同的影响。
诸如算术溢出或约束冲突之类的运行时错误具有下面的影响:
1.大多数运行时错误将停止执行批处理中当前语句和它之后的语句。
2.
某些运行时错误(如违反约束)仅停止执行当前语句。而继续执行批处理中其他所有语句。
在遇到运行时错误的语句之前执行的语句不受影响。唯一例外的情况是批处理位于事务中并且错误导致事务回滚。在这种情况下,所有在运行时错误之前执行的未提交数据修改都将回滚。
下面针对算术溢出或约束冲突之类的运行时错误做了一些测试:
一.创建测试表,建立各种约束
USE
tempdb
GO
IF
OBJECT_ID('dbo.TestConstraint') IS NOT NULL
DROP TABLE dbo.TestConstraint
GO
--
创建测试表,建立主键、
NOT NULL
定义、
UNIQUE
约束、
CHECK
约束、
DEFAULT
约束
CREATE
TABLE dbo.TestConstraint
(
id INT NOT NULL PRIMARY KEY,
username VARCHAR(20) NOT NULL CONSTRAINT UN_username UNIQUE(username),
zipcode CHAR