假设我们有100个学生限制类,我们在{1-1}之间创建一个列StudentId
列超出此限制的学生ID不生成
Create Table Class
(
StudentId Int Primary Key Identity(1,1)
StudentName Varchar(25)
)
insert into Class values('Jhon')
/* 2 ..
..
..
To 100 (Column) */
insert into Class values('Joy')
记录101
insert into Class values('Joy')
---当我们插入101行时,将发生错误
答案 0 :(得分:4)
CREATE TABLE RegTable
(StudentId NUMBER(8,0),
CONSTRAINT CheckRegNumber CHECK (StudentId <=100 and StudentId >0 )
);
在您的int列中添加CONSTRAINT
答案 1 :(得分:0)
CREATE TRIGGER LimitCount
For INSERT On Student
AS
If (SELECT COUNT(StudentId) From STUDENT) > 100
--DO SOMETHING OR ROLLBACK
关于这一点的一个缺点是它不能保证,如果删除时行实际上是100。所以你必须在DO SOMETHING部分做更多的事情
答案 2 :(得分:0)
如果您想将ClassTable
限制为100行,则可以创建after insert
触发器。由于您的列是identity
列,因此您不能依赖于ID,因为您可能处于无法插入行但您的学生少于100人的情况下。插入和删除行时通常会发生这种情况。解决此问题的一种方法是resetting
标识列和DBCC CHECKIDENT
命令,您不希望每次都执行此操作。
CREATE TRIGGER LimitRows
on ClassTable
after insert
as
declare @rowsCount int
select @rowsCount = Count(*) from ClassTable
if @rowsCount > 100
begin
rollback
end