Как разрешить добавление только определенного числа в поле таблицы при вставке - PullRequest
0 голосов
/ 28 сентября 2019

Моя проблема связана с подсчетом, и если я попытаюсь сделать это по-другому, сравнив emp_id, это не позволит мне сказать emp_id> 10, потому что он имеет тип char.Я пробовал много вещей, чтобы проверить, больше или равно ли количество строк в 10, но до сих пор не смог найти ничего подходящего для меня.Я помещу фрагмент из моей хранимой процедуры.

 begin
     if exists (select emp_id from employee where pub_id = @pubId group by emp_id having count(emp_id) > 10)
     throw 500001, 'Only 10 employees can be assigned to a publisher',1
     end

Ответы [ 2 ]

2 голосов
/ 28 сентября 2019

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

 begin
     if (select count(*) from employee where pub_id = @pubId) > 10
     throw 500001, 'Only 10 employees can be assigned to a publisher',1
     end

Возможно, вам придется сохранить этот оператор выбора в переменной, а затем проверить возвращаемое значение.

0 голосов
/ 28 сентября 2019

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

INSERT INTO employee(emp_id,Col1,Col2,Col3)
SELECT * FROM
(
    SELECT @emp_id,@Col1,@Col2,@Col3 
    -- Values are parameter value passed to the stored procedure
) A
WHERE 10 > (
    SELECT COUNT(*) 
    FROM employee 
    WHERE pub_id = @pubId 
    AND emp_id = @emp_id 
    -- If I guess correct, You need 10 same emp_id per pub_id
    -- If requirement is different, you can adjust your logic here
    -- like you can remove the filter AND emp_id = @emp_id
    -- This will consider any 10 records for the pub_id
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...