我创建一个视图:  
  create   view   IS_student  
  as  
  select   sno,sname,sage  
  from   student  
  where   sdept='IS'  
  with   check   option;  
  加上了with   check   option;后,不能执行插入操作:  
   
  insert   into   is_student  
  values('95100','李娜',12)  
   
  什么原因?不加上with   check   option则可以!  
 
with   check   option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。  
   
  --->而你只是查询出sdept='is'的纪录,你插入的根本不符合sdept='is'呀,所以就不行
 
默认情况下,由于行通过视图进行添加或更新,当其不再符合定义视图的查询的条件时,它们即从视图范围中消失。例如,可创建一个查询,从而定义一个视图以在表中检索所有员工薪水低于   $30,000   的行。如果该员工的薪水涨到了   $32,000,则查询视图时该特定员工将不再出现,因其薪水不符合视图所设的标准。但是,WITH   CHECK   OPTION   子句强制所有数据修改语句均根据视图执行,以符合定义视图的   SELECT   语句中所设的条件。如果使用该子句,修改行时需考虑到不让它在修改完后从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误信息。