问题是这样的。
保证一条记录中homephone和businessphone两个字段只能有一个是有值。
即要么homephone有值,要么businessphone有值。
所以,这里值有e正确,建立一个触发器,当用户输入或者修改是,判断是否两个字段都有值,若都有值,则取消操作。

解决方案 »

  1.   

    题的意思好象是说这两列不能同时为空,用什么手段来保障这一点。
    用触发器的话一定可以搞定,
    D在一次插入很多条记录的时候就不能保障了,故不正确。
    B的意思是说为表建一个规则保证两列不能同时为空!不过感觉规则没有这么厉害啊!
    故选E
      

  2.   

    smartdonkey(聪明的毛驴) 的解释好象反了,要保证一条记录中homephone和businessphone两个字段至少一个是有值。
    rule 没有能控制两个列的,所以A、B不对。
    本来用CHECK也可以搞定,但C是说拒绝两个字段的NULL,和题的要求不符。
    D是用触发器统计这两个字段的有值的个数,不知道能有什么作用。
      

  3.   

    仔细看了题,smartdonkey(聪明的毛驴) 的解释是对的,要保证一条记录中homephone和businessphone两个字段至多一个有值。
      

  4.   

    不会吧,版主,我看来看去都觉得是两个至少要一个有值啊!You must ensure that each record contains a value for either the HomePhone column or the BusinessPhone column. 
    题意应该是保证或者BusinessPhone column有值,或者HomePhone column有值。
    从逻辑上来说这样也好理解些。我觉得应该选E
      

  5.   

    呵呵,E文不过关!!包涵包涵!
    我也觉得选E,上面的题意确实是要么BusinessPhone column有值,要么HomePhone column有值,但E. Configure the trigger so that if one or more rows are found that meet these conditions, the trigger will cancel the data modification. 的these conditions指的是什么,为什么符合条件还要cancel the data modification。
      

  6.   

    ensure that each record contains a value.
    是a value,非a value at least.
    但不管怎么解释,答案都是E,D不够充分。
      

  7.   

    题目要求保证每条记录的两个字段有而且只有一个有值
    A,不允许为空
    B,保证输入不为空,没有保证只有一个有值
    C,CHECK只检查列
    D,统计列
    E,用TRIGGER保证满足条件,正确答案。
      

  8.   

    Bible中给出的答案是:C
    大家的意见如何?
      

  9.   

    C不对,应该允许一个null.
      

  10.   

    C正确,
    更正:RULE检查列,CHECK检查行,TRIGGER检查过程,不能检查错误的输入。
      

  11.   

    我认为是C.
    因为要保证一条记录中homephone和businessphone两个字段至少一个有值。
      

  12.   

    对单独一列可使用多个 CHECK 约束。按约束创建的顺序对其取值。通过在表一级上创建 CHECK 约束,可以将该约束应用到多列上。例如,多列 CHECK 约束可以用来判明 country 列值为 USA 且 state 列值为两个字母值所对应的行。这样就允许在一处同时检查多个条件。可以建立一个表级CHECK约束保证两个列不同时为空,
    constraint checkkl check((cast(isnull(k,0) as varchar(10))+cast(isnull(l,0) as varchar(10)))<>'00') 或者保证两个列只有一个值且必须有一个值
    constraint checkkl check(((cast(isnull(k,0) as varchar(10))+cast(isnull(l,0) as varchar(10)))<>'00') 
    and (cast(isnull((k+l),1) as varchar(20))='1'))
      

  13.   

    C is ok!
    不过B也是可以的。
      

  14.   

    头大~~~看看大家都有自己的道理,俺快要晕倒咧,不过我认为E是正确的。e能TRIGGER保证满足条件/