触发datetime列的问题

时间:2014-09-03 07:36:08

标签: sql-server-2008 datetime

我在表上使用Insert触发器,将一条记录从一个表复制到另一个表。

一切都好。它在datetime列之外工作正常。当我在插入的值中添加datetime列时,我收到错误:

  

列名无效

我的代码是

ALTER TRIGGER [dbo].[Insert_MoinitoringBasic]
ON [dbo].[M0_BasicInfo]
FOR INSERT 
AS 
BEGIN
    MERGE [MonitoringROSCII].[dbo].[MonitorBasicInfo] AS d
    USING (SELECT DistrictID, upazilaID, LC_ID, AcademicYear, Trimester, RepID,
                  CASE VisitType 
                    WHEN 'Initial validation' THEN 1
                    WHEN 'Full validation' THEN 2
                    WHEN 'Compliance monitoring' THEN 3
                 END AS VisitTp
           FROM INSERTED) AS s ON s.DistrictID = d.DistrictID 
                               AND s.upazilaID = d.upazilaID 
                               AND s.LC_ID = d.LCID 
                               AND s.AcademicYear = d.LCVisitYr 
                               AND s.Trimester = d.Trimister 
                               AND s.RepID = d.MOID 
                               AND s.VisitTp = d.VisitType
    WHEN MATCHED THEN 
       UPDATE 
       SET DistrictID = S.DistrictID

    WHEN NOT MATCHED THEN
       INSERT (DistrictID, UpazilaID, LCID, VisitType, LCVisitYr, Trimister, MOID,  
 LCStatus, IfCloseWhy, OthersSpecify,LC1stVstDt)
       VALUES (DistrictID, UpazilaID, Lc_ID, VisitTp, AcademicYear, Trimester, RepId, 
               2, 'No', 'No', FirstVisitDate);
END

这是FirstVisitDate列的最后一行datetime。没有这个列,它工作得很好但是当我包含这个列时,它会显示上面提到的错误。

有人可以帮我吗?

由于

1 个答案:

答案 0 :(得分:0)

正如错误文本所示,您正在引用一个不存在的列。

在MERGE语句的SELECT部分​​中,没有名为FirstVisitDate的输出列,这就是您收到错误的原因......