我想设置表格行的限制。我该怎么办?
例如我的表中有50行。
答案 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