日期:2014-05-18  浏览次数:20582 次

关于不同数据库间定义触发器的问题?
我有两个数据库A和B,两个数据库中都有一个表t_login,而且表结构主键都一样
想在表A中插入数据时,表B也插入数据,我在表A中定义了触发器如下
CREATE   TRIGGER   tg_bak   ON   A.dbo.t_login  
FOR   INSERT
AS
  insert   into   B.dbo.t_login
  select   *     from     inserted
GO
但在我锁进程中就出现锁定状态,数据库就整个不能动,请大家帮忙!谢谢!


------解决方案--------------------
B数据库中的t_login是不是也有insert触发器向A库的t_login插数据啊?是不是有死循环了?
------解决方案--------------------
我来帮楼主分析一下,如果按你所说的情况。insert into B.dbo.t_login会向B的t_login申请排它锁,那么这个时候如果进程被阻塞了,可能B的t_login上已经有一个数据库进程的共享或者排它锁。为了确定是否是这样,楼主应该使用sp_who和sp_lock,先检查一下。如果确实是这样的话,楼主应该检查一下你的业务处理流程中不时存在造成死锁的问题。