日期:2014-05-16  浏览次数:20474 次

数据库死锁!!!触发器中向链接服务器插入数据,<font color='red'>数据库马上瘫痪!!!</font>
/*
该触发器主要是为了同步生产系统与人事系统中的人员表变动,
*该触发器建立在ms2000上
*CODEBAR 是连接服务器的别名 安装在另外一台服务器,数据库是ms2005
*MPTM 为链接服务器中要操作的数据
*/
CREATE      TRIGGER employee_InsDel
ON employee
FOR INSERT
AS
SET NOCOUNT ON

DECLARE @empNo varchar(50)
IF EXISTS(SELECT * FROM inserted)
BEGIN
SELECT @empNo=bh FROM inserted
INSERT INTO CODEBAR.MPTM.dbo.Employee(employeeNo) VALUES(@empNo)
print '新增用户:'+@empNo
END
/*
--如果删除人员也同步
ELSE
BEGIN
SELECT @empNo=bh FROM deleted
DELETE FROM CODEBAR.MPTM.dbo.Employee WHERE employeeNo=@empNo
END*/

//在查询分析器中向链接服务器插入数据
如:INSERT INTO CODEBAR.MPTM.dbo.Employee(employeeNo) VALUES('3334')
是可以执行成功的,但是到了触发器中(我把这条插入语句放到存储过程中,在触发器中调用也一样死),
该数据库(非连接服务器的数据库)就死了,其他用户无法再连接上该数据库,也无法重启服务。最后只有重启操作系统。