最近学数据库原理的课程时,我们使用的是高等教育出版社出的《数据库系统教程》 第2版。学到视图那里的时候,书上(119页)有个例子是这样的的:
原来有一个表STUDENT,现在创建一个视图:
Select S#, Sname, Age
From S
Where Sex = ' M '
With Check Option
然后书上说,执行插入语句的话:
DBMS系统会自动将它转成下面这样:
要不然,上面的上面那句就违反了创建视图 S_MALE 时定义的 With Check Option 的条件,数据无法插入进去。
但是我在 MS SQL Server、MySQL、Access、Oracle中按书上说的这样子做,根本就不行。DBMS只会报告这个SQL(Insert Into S_MALE Values('S28', 'WU', 18))与 With Check Option 的条件冲突,不会自动在Values的里面自动加上'M'这样。我做实验的时候问老师,她也说不出个所以然来。然后我特地去图书馆查了若干本外国人写的数据库教程的书,没有看到有那一本书像这本书这样说 DBMS 会自动把那句命令变成另一句命令的。我又上网查了一下,看到有很多教学PPT里面也举了这样的一个例子(比如http://freeweb.nyist.net/~ldm/cailiao/DB/%B5%DA%C8%FD%D5%C2%20%20SQL.ppt)。我想是不是这些书写错了。
然后我又试过,也只有这样子建立的视图:
Select S#, Sname, Age, Sex
From S
Where Sex = ' M '
With Check Option
然后再这样子插入数据:
这样才行。
在大学教材里面都出这样的错误,实在是太草率了吧