RT

解决方案 »

  1.   

    create talbe [calss](class id varchar(10),personNumber int check(PersonNumber <=50))
      

  2.   

    CREATE TABLE CLASS(ID INT ,NUM INT CHECK(NUM<=50))
      

  3.   

    create table #test (i int check(i <=50))insert #test select 51消息 547,级别 16,状态 0,第 1 行
    INSERT 语句与 CHECK 约束"CK__#test__________i__0519C6AF"冲突。该冲突发生于数据库"tempdb",表"dbo.#test_______________________________________________________________________________________________________________000000000004", column 'i'。
    语句已终止。
      

  4.   


    -- 在什么表上建?不知道,只能举个例子。
    create table students (sid int identity, sname varchar(100), class_id int);
    go
    create trigger trg_limit on students
    for insert as
     if exists (select class_id from students group by class_id having count(1)>50)
     begin
      print 'Error: numbers of students in one class is beyond 50.'
      rollback tran;
     end
    goinsert into students (sname, class_id) values('A',2);
    go 51select * from students;
      

  5.   

    你好。你这里的roleback tran;这个tran是系统的吗?我没看到你自己定义这么一个变量。我不懂这个问题,希望你能稍微解释一下,谢谢
      

  6.   

    你好。你这里的insert #test select 51 这句话是什么意思呢?我不是很懂,谢谢你能解释一下
      

  7.   

    你好。我有两个表,一个students,一个class。class表只是存储班级的信息。如果像你这么写的话也可以写一个trigger,在插入数据库的时候同时class中的 人数++;我明白你的意思了。
      

  8.   


    就是不能插入大于50的,我是举个例子说明不大能插入大于50的数。
    还是用XMAN的那个比较合理