利用user_updatable_columns视图来查看视图中可以更新的列
2008-10-16 00:14
946 查看
利用user_updatable_columns视图来查看视图中可以更新的列
SQL> SET LONG 9999
SQL> SELECT DBMS_METADATA.GET_DDL('VIEW','CLASSES')
2 FROM DUAL;
DBMS_METADATA.GET_DDL('VIEW','CLASSES')
--------------------------------------------------------------------------------
CREATE OR REPLACE FORCE VIEW "TAISHAN_JAP"."CLASSES" ("CLASSNO", "CLASSNAME",
AR", "OTHERNAME", "BALANCE", "DEPARTMENTID", "STUDENTTYPECODE", "YEARLIMIT", "HE
ADER1", "HEADERPHONE1", "HEADER2", "HEADERPHONE2", "MONITORID", "CLASSROOMID", "
DORM", "CREATORID", "CREATORDATE", "LASTEDITID", "LASTEDITDATE", "CLASSESSTATUS"
) AS
SELECT
CLASSID CLASSNO, CLASSNAME CLASSNAME , SUBCAMPUSID SUBCAMPUSID,
C.SPECIALITYID SPECIALITYID,C.GRADE GRADEYEAR, CLASSALIAS OTHERNAME,
0 BALANCE, C.DEPID DEPARTMENTID, S.TRAINLEVEL STUDENTTYPECODE,
S.DEFAULTYEARS YEARLIMIT,(SELECT A.ADMINPERSONID FROM XJ_CLASSADMIN A WHERE A.
ROWNUM=1) HEADER1,
(SELECT A.TELEPHONE FROM XJ_CLASSADMIN A WHERE A.CLASSID=C.CLASSID AND ROWNUM=
' ' HEADER2, ' ' HEADERPHONE2, ' ' MONITORID,
C.FIXEDCLASSROOMID CLASSROOMID,' ' DORM, '' CREATORID,
SYSDATE CREATORDATE,'' LASTEDITID, SYSDATE LASTEDITDATE,
'0' CLASSESSTATUS
FROM XJ_CLASSES C,UP_SPECIALITYINYEAR US,UP_SPECIALITY S
WHERE C.SPECIALITYID=US.SPECIALITYID AND C.GRADE=US.GRADE AND US.SPECIALITYID
SPECIALITYID
查看classes视图的定义,有多个表连接构成,但并不是说该视图就不能更新。
SQL> SELECT COLUMN_NAME,UPDATABLE,INSERTABLE,DELETABLE
2 FROM USER_UPDATABLE_COLUMNS
3 WHERE TABLE_NAME='CLASSES';
COLUMN_NAME UPD INS DEL
------------------------------ --- --- ---
CLASSNO YES YES YES
CLASSNAME YES YES YES
SUBCAMPUSID YES YES YES
SPECIALITYID YES YES YES
GRADEYEAR YES YES YES
OTHERNAME YES YES YES
BALANCE NO NO NO
DEPARTMENTID YES YES YES
STUDENTTYPECODE NO NO NO
YEARLIMIT NO NO NO
HEADER1 NO NO NO
HEADERPHONE1 NO NO NO
HEADER2 NO NO NO
HEADERPHONE2 NO NO NO
MONITORID NO NO NO
CLASSROOMID YES YES YES
DORM NO NO NO
CREATORID NO NO NO
CREATORDATE NO NO NO
LASTEDITID NO NO NO
LASTEDITDATE NO NO NO
CLASSESSTATUS NO NO NO
已选择22行。
SQL> SELECT CLASSID,CLASSNAME
2 FROM XJ_CLASSES
3 WHERE ROWNUM=1;
CLASSID CLASSNAME
-------------------------------- --------------------------------
C875F600867948568816847C9B513600 09G数维2班
SQL> UPDATE CLASSES
2 SET CLASSNAME='TEST'
3 WHERE CLASSNO='C875F600867948568816847C9B513600';
已更新 1 行。
当然也可以使用dba_updatable_columns和all_updatable_columns也可以实现此事!
记录下来,便于查阅!
=================================
摘自:http://blog.chinaunix.net/u/22472/showart.php?id=315113
西方经济学的百草园
作者:红红 创建于: 2007-06-05 15:40:40,修改于: 2007-06-05 15:40:40,已浏览225次,有评论0条
=================================
SQL> SET LONG 9999
SQL> SELECT DBMS_METADATA.GET_DDL('VIEW','CLASSES')
2 FROM DUAL;
DBMS_METADATA.GET_DDL('VIEW','CLASSES')
--------------------------------------------------------------------------------
CREATE OR REPLACE FORCE VIEW "TAISHAN_JAP"."CLASSES" ("CLASSNO", "CLASSNAME",
AR", "OTHERNAME", "BALANCE", "DEPARTMENTID", "STUDENTTYPECODE", "YEARLIMIT", "HE
ADER1", "HEADERPHONE1", "HEADER2", "HEADERPHONE2", "MONITORID", "CLASSROOMID", "
DORM", "CREATORID", "CREATORDATE", "LASTEDITID", "LASTEDITDATE", "CLASSESSTATUS"
) AS
SELECT
CLASSID CLASSNO, CLASSNAME CLASSNAME , SUBCAMPUSID SUBCAMPUSID,
C.SPECIALITYID SPECIALITYID,C.GRADE GRADEYEAR, CLASSALIAS OTHERNAME,
0 BALANCE, C.DEPID DEPARTMENTID, S.TRAINLEVEL STUDENTTYPECODE,
S.DEFAULTYEARS YEARLIMIT,(SELECT A.ADMINPERSONID FROM XJ_CLASSADMIN A WHERE A.
ROWNUM=1) HEADER1,
(SELECT A.TELEPHONE FROM XJ_CLASSADMIN A WHERE A.CLASSID=C.CLASSID AND ROWNUM=
' ' HEADER2, ' ' HEADERPHONE2, ' ' MONITORID,
C.FIXEDCLASSROOMID CLASSROOMID,' ' DORM, '' CREATORID,
SYSDATE CREATORDATE,'' LASTEDITID, SYSDATE LASTEDITDATE,
'0' CLASSESSTATUS
FROM XJ_CLASSES C,UP_SPECIALITYINYEAR US,UP_SPECIALITY S
WHERE C.SPECIALITYID=US.SPECIALITYID AND C.GRADE=US.GRADE AND US.SPECIALITYID
SPECIALITYID
查看classes视图的定义,有多个表连接构成,但并不是说该视图就不能更新。
SQL> SELECT COLUMN_NAME,UPDATABLE,INSERTABLE,DELETABLE
2 FROM USER_UPDATABLE_COLUMNS
3 WHERE TABLE_NAME='CLASSES';
COLUMN_NAME UPD INS DEL
------------------------------ --- --- ---
CLASSNO YES YES YES
CLASSNAME YES YES YES
SUBCAMPUSID YES YES YES
SPECIALITYID YES YES YES
GRADEYEAR YES YES YES
OTHERNAME YES YES YES
BALANCE NO NO NO
DEPARTMENTID YES YES YES
STUDENTTYPECODE NO NO NO
YEARLIMIT NO NO NO
HEADER1 NO NO NO
HEADERPHONE1 NO NO NO
HEADER2 NO NO NO
HEADERPHONE2 NO NO NO
MONITORID NO NO NO
CLASSROOMID YES YES YES
DORM NO NO NO
CREATORID NO NO NO
CREATORDATE NO NO NO
LASTEDITID NO NO NO
LASTEDITDATE NO NO NO
CLASSESSTATUS NO NO NO
已选择22行。
SQL> SELECT CLASSID,CLASSNAME
2 FROM XJ_CLASSES
3 WHERE ROWNUM=1;
CLASSID CLASSNAME
-------------------------------- --------------------------------
C875F600867948568816847C9B513600 09G数维2班
SQL> UPDATE CLASSES
2 SET CLASSNAME='TEST'
3 WHERE CLASSNO='C875F600867948568816847C9B513600';
已更新 1 行。
当然也可以使用dba_updatable_columns和all_updatable_columns也可以实现此事!
记录下来,便于查阅!
=================================
摘自:http://blog.chinaunix.net/u/22472/showart.php?id=315113
西方经济学的百草园
作者:红红 创建于: 2007-06-05 15:40:40,修改于: 2007-06-05 15:40:40,已浏览225次,有评论0条
=================================
相关文章推荐
- SQL Server 利用触发器对多表视图进行更新的实现方法
- SQL Server 利用触发器对多表视图进行更新的实现方法
- 在VB.NET中 用代码 利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法
- android中的websocket 应用 websocket 在实际的应用中不仅仅能做聊天应用,还可以利用websocket长连接保持数据的实时更新以及信息的推送。 websocket 的实现的
- Android: 如何利用Handler、Thread更新视图
- user_constraints,user_cons_columns查看外键
- Oracle数据库系统视图USER_TAB_COLS和USER_TAB_COLUMNS的区别
- Firefox - 附加软件 - Firebug - DOM视图 - 借助Show User-defined Properties选项查看javascript全局变量
- android listview利用多线程异步加载图片并更新视图
- Android 利用多线程异步加载图,并把图片处理成圆角,并更新视图
- 【视图】利用USER_TAB_MODIFICATIONS视图辅助监控表的增删改等操作
- user_constraints,user_cons_columns查看外键
- [转]【纠误】NUMBER定义的长度与USER_TAB_COLUMNS视图中DATA_LENGTH内容不符之缘由
- SQL Server 利用触发器对多表视图进行更新
- 所有的视图是否都可以更新?为什么?
- shiro 如何让一个页面既可以让admin查看,又可以让user查看
- 视图包含下列结构是不可以更新
- iOS 查看.a文件的方法,可以查看有无热更新代码,防止上线被拒绝
- Oracle数据库系统视图USER_TAB_COLS和USER_TAB_COLUMNS
- linux 乱码 及解决方法 locale 可以利用iconv -l 来查看linux系统都支持哪种编码格式