view (视图定义中含distinct时的操作)


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)都会出现下面的错误;
view (视图定义中含distinct时的操作)_第1张图片





你可能感兴趣的:(view)