以下是我的存储过程create procedure StationInfo_Delete --根据站点ID(StationID)删除数据 StationInfo
@StationID int
with encryption
asbegin transaction--开始事物
declare @errorNumber int--错误
delete SensorInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
delete StationInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
if (@errorNumber<>0)
begin
print '删除失败!'
rollback transaction--事物回滚
end
else
begin
print @@error
print '删除成功!'
--rollback transaction
commit transaction--执行事物
end
go执行 :
execute StationInfo_Delete 1报错
DELETE 语句与 COLUMN REFERENCE 约束 'FK__DataTable__Senso__01142BA1' 冲突。该冲突发生于数据库 'Project2',表 'DataTable', column 'SensorID'。
语句已终止。
服务器: 消息 547,级别 16,状态 1,过程 StationInfo_Delete,行 11
DELETE 语句与 COLUMN REFERENCE 约束 'FK__SensorInf__Stati__7E37BEF6' 冲突。该冲突发生于数据库 'Project2',表 'SensorInfo', column 'StationID'。
语句已终止。
0
删除成功!
补充:我知道我数据库中另外一个表 DataTable 与 SensorInfo 有外键约束 没有考虑进这个存储过程里面。我不明白的是为什么有 错误 但是 @@Erroe 却还是为 0 我也有定义一个declare @errorNumber int 来累加错误,再每一个执行语句后面
set @errorNumber=@errorNumber+@@error--错误累计
但是 @errorNumber也为0. 明明就有错误 ,为什么没有改变呢
@StationID int
with encryption
asbegin transaction--开始事物
declare @errorNumber int--错误
delete SensorInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
delete StationInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
if (@errorNumber<>0)
begin
print '删除失败!'
rollback transaction--事物回滚
end
else
begin
print @@error
print '删除成功!'
--rollback transaction
commit transaction--执行事物
end
go执行 :
execute StationInfo_Delete 1报错
DELETE 语句与 COLUMN REFERENCE 约束 'FK__DataTable__Senso__01142BA1' 冲突。该冲突发生于数据库 'Project2',表 'DataTable', column 'SensorID'。
语句已终止。
服务器: 消息 547,级别 16,状态 1,过程 StationInfo_Delete,行 11
DELETE 语句与 COLUMN REFERENCE 约束 'FK__SensorInf__Stati__7E37BEF6' 冲突。该冲突发生于数据库 'Project2',表 'SensorInfo', column 'StationID'。
语句已终止。
0
删除成功!
补充:我知道我数据库中另外一个表 DataTable 与 SensorInfo 有外键约束 没有考虑进这个存储过程里面。我不明白的是为什么有 错误 但是 @@Erroe 却还是为 0 我也有定义一个declare @errorNumber int 来累加错误,再每一个执行语句后面
set @errorNumber=@errorNumber+@@error--错误累计
但是 @errorNumber也为0. 明明就有错误 ,为什么没有改变呢
@@ROWCOUNT
返回受上一语句影响的行数。语法
@@ROWCOUNT返回类型
integer注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。示例
下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'
create procedure StationInfo_Delete --根据站点ID(StationID)删除数据 StationInfo
@StationID int
with encryption
as begin transaction--开始事物
declare @errorNumber int--错误
delete SensorInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
delete StationInfo where StationID=@StationID
set @errorNumber=@errorNumber+@@error--错误累计
if (@errorNumber <>0)
begin
print '删除失败!'
print @@error
rollback transaction--事物回滚
end
else
begin
print '删除成功!'
--rollback transaction
commit transaction--执行事物
end
go 执行 :
execute StationInfo_Delete 1