在SQL中设置表行的限制

时间:2011-10-28 14:04:21

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我想设置表格行的限制。我该怎么办?

例如我的表中有50行。

4 个答案:

答案 0 :(得分:10)

在表格上创建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

答案 1 :(得分:6)

使用CHECK约束。 E.g:

CREATE TABLE t1 (x TINYINT NOT NULL UNIQUE CHECK (x BETWEEN 1 AND 50));

答案 2 :(得分:2)

您指的是限制查询结果吗?

如果是这样,使用SQL Server 2008,您可以使用TOP

SELECT TOP 50 *
FROM Table

如果您正在考虑实际限制数据库表中的记录数量,那么TRIGGER中的{{1}}发布的IF语句将是我的解决方案。

答案 3 :(得分:2)

你想要的是拥有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