读书人

触发器

发布时间: 2012-06-02 14:16:14 作者: rapoo

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

SQL code
ALTER TRIGGER [Ins51CheckInout]   ON  [dbo].[CHECKINOUT]   AFTER InsertAS BEGININSERT 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.UserIDINNER JOIN  AIS20080906181951..HM_Employees C ON A.SSN=C.CodeEND


[解决办法]
感觉你写的触发器与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 InsertAS BEGININSERT 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.UserIDINNER JOIN  AIS20080906181951..HM_Employees C ON A.SSN=C.CodeEND
[解决办法]
探讨
检查了下,错了个地方,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是成功的,程序里却不成功。

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

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

[解决办法]
感觉触发器没有什么问题 看看是不是别的地方马虎了

读书人网 >SQL Server

热点推荐