以下是我们的某个SQL表中用于任何插入/更新操作的触发器。 99/100倍这个触发但是每一个现在工作得很好,然后我们收到此错误信息:尝试使用触发器插入数据时出错T-SQL
无法将NULL值插入列“TransactionDate”,表 “AgentResourcesU01.dbo.TransactionLog”;列不允许有空值。
INSERT失败。该语句已终止。
你可以从INSERT语句看到,在我们的事务日志表中的列TransactionDate, Operator, TableName, Action, TableString
和UserId
。我在开始的SELECT语句中设置变量@transDate
,因此对我而言,应该没有办法让NULL进入那里,除非它是坏数据进来。
任何想法?
BEGIN
SELECT @symetraNumber = SymetraNumber, @lastChangeOperator = LastChangeOperator, @transDate = LastChangeDate, @entityType = EntityType,
@firstName = FirstName, @lastName = LastName, @suffix = NameSuffix, @corpName = CorporateName, @controlId = ControlId
FROM inserted
IF @firstName IS NULL SET @firstName = 'NULL'
IF @lastName IS NULL SET @lastName = 'NULL'
IF @suffix IS NULL SET @suffix = 'NULL'
IF @corpName IS NULL SET @corpName = 'NULL'
IF @controlId IS NULL SET @controlId = 'NULL'
SET @tableString = 'SymNum:' + @symetraNumber + ' EntType:' + @entityType + ' Fname:' + @firstName + ' Lname:' + @lastname + ' Suff:' + @suffix +
' CorpName:' + @corpName + ' ctrlId:' + @controlId
INSERT INTO TransactionLog (TransactionDate, Operator, TableName, Action, TableString, UserId)
VALUES (@transDate, 'Op', @tableName, @action, @tableString, @lastChangeOperator)
END
您是否确认'LastChangeDate'不为null? – Taryn
是的,我们只是做到了。 – NealR
结果是什么? – Taryn