Как ограничить спецификацию вставки c количество строк в таблице на SQL сервере - PullRequest
0 голосов
/ 21 марта 2020

Как ограничить спецификацию вставки c количество строк в таблице на SQL Сервере?

Я разработал онлайн-систему регистрации курсов для студентов, где студенты резервируют места для выбора курсов.

Каждый курс имеет разделы, и каждый раздел имеет ограниченное количество мест 30/35 или 40, которое определено в таблице Section.

Проблема в том, что студенты борются за последнее место за то же время тогда это превышает вместимость места. Поэтому я создал в таблице триггер для обработки количества записей в соответствии с количеством мест, определенным в таблице разделов.

Это работает абсолютно правильно. Но для триггера мое веб-приложение становится очень медленным. Я не хочу триггер сейчас. Мне нужно другое дублирующее решение, чтобы справиться с проблемой превышения места в сидении.

Не могли бы вы предложить хорошее решение без реализации триггера?

Структура моей таблицы и триггер показаны здесь:

image for table and trigger

1 Ответ

0 голосов
/ 21 марта 2020

используйте хранимую процедуру для вставки данных перед вставкой данных, проверьте в индексной таблице, и если строки больше, возвращают 1 как true и 0 как false и выдают сообщение впереди. Не вызывайте ошибку, выполнение которой занимает больше времени

IF (SELECT Count(p.rows) AS [Row Count]
    FROM sys.partitions p
    INNER JOIN sys.indexes i ON p.object_id = i.object_id
                             AND p.index_id = i.index_id
    WHERE i.type_desc = 'CLUSTERED'
    and p.object_id = object_id('table'))>40
Begin 
 insert into table 
 select 1 
end 
else 
 select 0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...