以下は、挿入/更新アクションのためにSQLテーブルの1つで使用されるトリガーです。このトリガーは99/100回正常に機能しますが、時々次のエラーメッセージが表示されます。
列'TransactionDate'、テーブル'AgentResourcesU01.dbo.TransactionLog'に値NULLを挿入できません。列はnullを許可しません。
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