Мне нужно использовать часы на моем SQL Server, чтобы написать время для одной из моих таблиц, поэтому я подумал, что просто использую GETDATE(). Проблема в том, что я получаю сообщение об ошибке из-за моего триггера INSTEAD OF. Есть ли способ установить один столбец в GETDATE(), когда другой столбец является столбцом идентификации?Linq to SQL с триггером INSTEAD OF и столбец Identity
Это Linq к SQL:
internal void LogProcessPoint(WorkflowCreated workflowCreated, int processCode)
{
ProcessLoggingRecord processLoggingRecord = new ProcessLoggingRecord()
{
ProcessCode = processCode,
SubId = workflowCreated.SubId,
EventTime = DateTime.Now // I don't care what this is. SQL Server will use GETDATE() instead.
};
this.Database.Add<ProcessLoggingRecord>(processLoggingRecord);
}
Это таблица. EventTime - это то, что я хочу иметь как GETDATE(). Я не хочу, чтобы столбец был нулевым.
А вот триггер:
ALTER TRIGGER [Master].[ProcessLoggingEventTimeTrigger]
ON [Master].[ProcessLogging]
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
SET IDENTITY_INSERT [Master].[ProcessLogging] ON;
INSERT INTO ProcessLogging (ProcessLoggingId, ProcessCode, SubId, EventTime, LastModifiedUser)
SELECT ProcessLoggingId, ProcessCode, SubId, GETDATE(), LastModifiedUser FROM inserted
SET IDENTITY_INSERT [Master].[ProcessLogging] OFF;
END
Не вдаваясь во все вариации, которые я пробовал, это последняя попытка производит эту ошибку:
InvalidOperationException недостаточность Член AutoSync , Для того, чтобы члены AutoSynced после вставки, тип должен либо иметь автогенерируемый идентификатор, либо ключ, который не был изменен базой данных после вставки.
Я могу удалить EventTime из своего объекта, но я не хочу этого делать. Если бы оно исчезло, тогда это будет NULL во время INSERT и GETDATE().
Есть ли способ, которым я могу просто использовать GETDATE() в столбце EventTime для INSERT?
Примечание: Я не хочу использовать C# 's DateTime.Now по двум причинам: 1. Один из этих вставок генерируется сам SQL Server (из другой хранимой процедуры) 2. Времена могут быть разными на разных машинах, и я хотел бы точно знать, как быстро происходят мои процессы.
Это сработало отлично! Благодаря! –