Я использую Entity Framework и MSSQL ...
Мне нужно вставить пользовательский ссылочный номер при вставке записи.Формат YYYY-01
, YYYY-02
и т. Д., Но порядковый номер должен быть сброшен при начале нового года.
Например, 2011-01
, 2011-02
, 2012-01
Мне интересно, стоит ли мне просто использовать триггер или управлять этим с помощью EF или?
Регулярная переустановка нумерации каждый год меня немного смущает ...
Спасибо за любой совет!
Обновление:
Извините, не удалосьТег Code
для правильной работы с разметкой
- переменные ОБЪЯВИТЬ @ год INT ,@seqNum INT ; - Попробуйте выяснить, содержит ли таблица [ComplaintCount] текущий год SET @year = (ВЫБРАТЬ [Количество_год]ОТ [ЖалобаCount]ГДЕ [Count_Year] = ГОД ( Getdate ())) - Если текущий год не может быть найден в таблице [ComplaintCount], необходимо сделать новую запись для текущего года ЕСЛИ @ год НЕДЕЙСТВИТЕЛЕННАЧАТЬ - Получить текущий год и установить начальный порядковый номер, чтобы начать отсчет для нового года SET @year = ГОД ( Getdate ());SET @seqNum = 1; - вставить новые значения по умолчанию в таблицу [ComplaintCount] ВСТАВИТЬ В [ComplaintCount](Count_year,count_current)ЦЕННОСТИ (@year,@seqNum);КОНЕЦELSEНАЧАТЬ - Мы уже нашли запись в таблице [ComplaintCount] за текущий год - Получить порядковый номер и увеличить его на один SET @seqNum = (SELECT [Count_Current]ОТ [ЖалобаCount]ГДЕ [Count_Year] = @year) + 1 - вставить новые значения в таблицу [ComplaintCount] ОБНОВЛЕНИЕ [ComplaintCount]SET [Count_Current] = @seqNumГДЕ [Count_Year] = @year;КОНЕЦ - Теперь можно безопасно ввести правильный ссылочный номер в таблицу [Жалоба] ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ [Жалоба]SET [Complaint_Reference] = CAST (@ год AS VARCHAR ) + '-' + CAST (@seqNum AS VARCHAR )ОТ [Жалоба]INNER JOIN вставленВКЛ [Жалоба]. [PK_Complaint_Id] = вставлено. [PK_Complaint_Id]