使用触发器阻止同时删除多行 ,由于在SqlServer2000中"delete"语句会以隐性事务模式进行操作.
所以想到一个方法.
首先看SqlServer2000联机文档对隐性事务的描述:
连接以隐性事务模式进行操作时,SQL Server 将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。隐性事务模式生成连续的事务链。
在为连接将隐性事务模式设置为打开之后,当 SQL Server 首次执行下列任何语句时,都会自动启动一个事务:
ALTER TABLE | INSERT |
CREATE | OPEN |
DELETE | REVOKE |
DROP | SELECT |
FETCH | TRUNCATE TABLE |
GRANT | UPDATE |
在发出 COMMIT 或 ROLLBACK 语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接执行这些语句中的任何语句时,SQL Server 都将自动启动一个新事务。SQL Server 将不断地生成一个隐性事务链,直到隐性事务模式关闭为止。
所以有如下解决办法:
CREATE
TRIGGER
TRI_NAME_DEL
ON
[
dbo
]
.
[
Table
]
FOR DELETE
AS
if @@rowcount > 1
begin
print ' 请不要一次删除多于一条的记录! '
rollback transaction
end
FOR DELETE
AS
if @@rowcount > 1
begin
print ' 请不要一次删除多于一条的记录! '
rollback transaction
end