SQL> select * from v$version;
BANNER--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL>SELECT * from student;
ID | NAME | SCORE |
1 | Aaron | 78 |
2 | Bill | 76 |
3 | Cindy | 89 |
4 | Damon | 90 |
5 | Ella | 73 |
6 | Frado | 61 |
7 | Gill | 99 |
8 | Hellen | 56 |
9 | Ivan | 93 |
10 | Jay | 90 |
SQL> CREATE OR REPLACE VIEW v_student AS SELECT ID,NAME AS v_name FROM student;
SQL>select * from v_student
ID | V_NAME |
1 | Aaron |
2 | Bill |
3 | Cindy |
4 | Damon |
5 | Ella |
6 | Frado |
7 | Gill |
8 | Hellen |
9 | Ivan |
10 | Jay |
SQL> UPDATE v_student f SET f.v_name='youjinge' WHERE ID=1;
ID | NAME | SCORE |
1 | youjinge | 78 |
2 | Bill | 76 |
3 | Cindy | 89 |
4 | Damon | 90 |
5 | Ella | 73 |
6 | Frado | 61 |
7 | Gill | 99 |
8 | Hellen | 56 |
9 | Ivan | 93 |
10 | Jay | 90 |
SQL>select * from v_student
ID | V_NAME |
1 | youjinge |
2 | Bill |
3 | Cindy |
4 | Damon |
5 | Ella |
6 | Frado |
7 | Gill |
8 | Hellen |
9 | Ivan |
10 | Jay |
SQL> DELETE v_student m WHERE m.ID=1;
ID | NAME | SCORE |
2 | Bill | 76 |
3 | Cindy | 89 |
4 | Damon | 90 |
5 | Ella | 73 |
6 | Frado | 61 |
7 | Gill | 99 |
8 | Hellen | 56 |
9 | Ivan | 93 |
10 | Jay | 90 |
SQL>select * from v_student
ID | V_NAME |
2 | Bill |
3 | Cindy |
4 | Damon |
5 | Ella |
6 | Frado |
7 | Gill |
8 | Hellen |
9 | Ivan |
10 | Jay |
改变视图定义(加入distinct)
SQL>CREATE OR REPLACE VIEW v_student AS SELECT DISTINCT ID,NAME AS v_name FROM student;
无论删除还是更新(dml)都会出现下面的错误;