Где / Как создать ссылочный номер - PullRequest
2 голосов
/ 11 мая 2011

Я использую 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]

1 Ответ

1 голос
/ 12 мая 2011

Я бы сказал, триггер.Создайте таблицу из двух столбцов, которая хранит год и номер текущей записи, а затем использует триггер для поиска текущего года, увеличивает столбец подсчета на единицу, а затем возвращает этот счет в триггер.Включите в триггер логику: если новый год не существует, вставьте новый год.Я знаю, что большинству людей нравится избегать триггеров, если это возможно, но это вполне законное использование триггера и требует гораздо меньшего количества обработки, чем попытка подсчета записей при каждой вставке.также окажутся полезными в будущем, когда вы пытаетесь провести аудит прошлого года или ответить на вопросы BI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...