当向SPJ中添加或修改记录时,要求判断所输入的sno,pno,jno是否有效,无效时禁止操作。

解决方案 »

  1.   

    可以用约束处理或触发器控制:--触发器:
    create trigger tr_test on spj
    for insert,update
    as
    if exists(select 1 from inserted where isnull(sno,'')='' or isnull(pno,'')='' or isnull(jno,'')='')
    begin
        raiserror('添加或修改的记录无效,请重新输入.',16,1)
        rollback
    end
    go其实更建议在程序中实现。
      

  2.   

    如果我理解错了,请楼主重新表达清楚,THS
      

  3.   

    就是有4个表S,P,J,SPJ S表SNO为主键,P表PNO为主键,J表JNO为主键,SPJ表SNO,PNO,JNO为主键
      

  4.   

    就是插入或更新的SNO PNO JNO必须是 S P J中的  那才是有效的
      

  5.   

    是个表  一共有4个表  S  P  J   SPJ
      

  6.   

    SPJ是一个表,那要参照表中的哪个字段呢
      

  7.   

    sno sname city
    s1  ...   ..
    s2  ..    ..  
     
    pno pname color 
    p1  ..    ...  
    p2  .     .. jno  jname  city
    j1   ,,     .. 
    j2   ..     ..sno pno  jno  rty
    s1  p2   j3   .
    s2  p1   j3   ..
    4个表大概就是这样的
      

  8.   

    create trigger tr_SPJ on SPJ
    for insert,update
    as
    if not exists(select 1 from inserted a join s on a.sno=s.sno join p on a.pno=p.pno join j on a.jno=j.jno)
    begin
        raiserror('添加或修改的记录无效,请重新输入.',16,1)
        rollback
    end
    go