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

求一个触发器
我想把一个数据库中的记录表新增时同步到另一个表,结果在执行的时候原数据库都加入不进去了。求高手解释。

SQL code

ALTER TRIGGER [Ins51CheckInout]
   ON  [dbo].[CHECKINOUT]
   AFTER Insert
AS 
BEGIN
INSERT INTO AIS20080906181951..HR_ATS_OriginalityCard(fCardID,FCardDateTime,FEmpID)
SELECT 999,B.CheckTime,C.EM_ID FROM FMIATT..UserInfo A INNER JOIN FMIATT..Inserted B ON A.UserID=B.UserID
INNER JOIN  AIS20080906181951..HM_Employees C ON A.SSN=C.Code
END



------解决方案--------------------
感觉你写的触发器与CHECKINOUT没有关系阿,
你的关联关系是不是
CHECKINOUT.UserID = FMIATT..UserInfo.UserID
 AIS20080906181951..HM_Employees.Code = FMIATT..UserInfo.SSN
要在表CHECKINOUT插入记录时,向表AIS20080906181951..HR_ATS_OriginalityCard插入记录,
如果是上面的关联关系.改成下面的.
SQL code

ALTER TRIGGER [Ins51CheckInout]
   ON  [dbo].[CHECKINOUT]
   AFTER Insert
AS 
BEGIN
INSERT INTO AIS20080906181951..HR_ATS_OriginalityCard(fCardID,FCardDateTime,FEmpID)
SELECT 999,B.CheckTime,C.EM_ID FROM FMIATT..UserInfo A INNER JOIN inserted B ON A.UserID=B.UserID
INNER JOIN  AIS20080906181951..HM_Employees C ON A.SSN=C.Code
END

------解决方案--------------------
探讨
检查了下,错了个地方,FMIATT..Inserted 应改为Inserted.但是在数据库是Insert是成功的,程序里却不成功。

------解决方案--------------------
如果没有数据在AIS20080906181951..HR_ATS_OriginalityCard,检查关联是否正确,
再在查询分析器中看看有没有符合条件的数据
SELECT 999,B.CheckTime,C.EM_ID FROM FMIATT..UserInfo A INNER JOIN CHECKINOUT B ON A.UserID=B.UserID
INNER JOIN AIS20080906181951..HM_Employees C ON A.SSN=C.Code

------解决方案--------------------
探讨

引用:

引用:
检查了下,错了个地方,FMIATT..Inserted 应改为Inserted.但是在数据库是Insert是成功的,程序里却不成功。

程序一般是在客户端对数据进行操作,数据操作后触发服务器的东西.
触发器是在服务器端执行,按说应该和你的程序没有关系.

那就奇怪了,我在查询分析器里执行完全没问题。
……

------解决方案--------------------
感觉触发器没有什么问题 看看是不是别的地方马虎了