Установить предел для строк таблицы в SQL - PullRequest
1 голос
/ 28 октября 2011

Я хочу установить предел для строк моей таблицы. Как я могу это сделать?

Например, 50 строк в моей таблице.

Ответы [ 4 ]

10 голосов
/ 28 октября 2011

Создайте триггер AFTER INSERT на столе.Вот что-то, что будет относительно эффективным с вашим требованием:

create trigger LimitTable
on YourTableToLimit
after insert
as
    declare @tableCount int
    select @tableCount = Count(*)
    from YourTableToLimit

    if @tableCount > 50
    begin
        rollback
    end
go
6 голосов
/ 28 октября 2011

Использовать ограничение CHECK. E.g.:

CREATE TABLE t1 (x TINYINT NOT NULL UNIQUE CHECK (x BETWEEN 1 AND 50));
2 голосов
/ 28 октября 2011

Вам нужен триггер INSTEAD OF INSERT, который проверяет # текущих строк.Если уже 50, вы выдадите ошибку, используя RAISERROR.Если нет, вы просто insert записываете.

Внимание! Впереди непроверенный код.Он может содержать опечатки или небольшие синтаксические ошибки.Код должен показать вам концепции.Настроить и настроить в соответствии с вашими потребностями соответственно.

Как это:

CREATE TRIGGER checktablelimit 
ON yourtable 
INSTEAD OF INSERT 
AS 
  DECLARE @currentCount INT 

  SELECT @currentCount = COUNT(*) 
  FROM   yourtabletolimit 

  IF @currentCount = 50 
    BEGIN 
        RAISERROR ('Table already has 50 records', 
                   11, 
                   1); 
    END 
  ELSE 
    BEGIN 
        INSERT INTO yourtable 
                    (field1, 
                     field2, 
                     field3) 
        SELECT field1, 
               field2, 
               field3 
        FROM   inserted 
    END 

GO 
2 голосов
/ 28 октября 2011

Вы имеете в виду ограничение результатов запроса?

Если это так, с SQL Server 2008 вы можете использовать TOP

SELECT TOP 50 *
FROM Table

Если вы смотрите на фактическое ограничение количества записей в таблице базы данных, то моим решением будет оператор IF в TRIGGER, например, @ Shark .

...