PL/SQL Challenge 每日一题:2013-7-22

[复制链接]
查看11 | 回复3 | 2012-5-21 10:19:41 | 显示全部楼层 |阅读模式
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?mod=forumdisplay&fid=3&filter=typeid&typeid=1808
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者: Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品


2013-07-22_081115.png (23.54 KB, 下载次数: 8)
下载附件
2013-7-22 08:12 上传

回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
哪些选项创建了一个触发器,使得运行下面块只出现一次“Created!”
如果全不对,选e
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
BC正确
A将输出四次"Created!",触发器是针对所有的DDL
BC两个其实是同一个意思,当CREATE TABLE时输出"Created!"
D错误,因为DDL Trigger只能on SCHEMA或DATABASE,不可on TABLE
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
答案BC, 3楼得奖。
A: 这个选项的结果是"Created"会被显示四次,每个DDL一次。这个触发器会被任何DDL触发,对于这个字符串的显示没有任何限制。
B: 在这个选项中,我用了ORA_DICT_OBJ_TYPE属性来决定DDL所创建的对象的类型。只有PLCH_TEMP的创建复合这个要求,所以字符串仅仅被显示一次。
C: 我依赖于两种属性,ORA_DICT_OBJ_TYPE 和 ORA_SYSEVENT 来确保仅当一张表被创建的时候才显示这个字符串。
D: 这个触发器无法编译,会报这个错: "ORA-00903: invalid table name"
在DDL触发器中你只能够用"ON SCHEMA" 或者 "ON INSTANCE",没有"ON TABLE"这种选项。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行