数据库管理-m6米乐安卓版下载

原创 胖头鱼的鱼缸 2023-04-14
498

昨晚割接,搭了一套19c的adg,今天睡了个懒觉,早上把笔记本内存扩到了64gb,主要是为了后面做实验。然后下午拼了个乐高,根据公司要求报了个1z0-902,也算是给我的那么多台exadata维护搞个持证上岗。
到了晚上确实没忍住,总觉得昨天文章对sql domain没有很全面,今天继续探索。

1 domain函数

【https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/domain-functions.html】
sql domain配套新增了一系列函数进行配合使用,昨天最后一个示例也展示了domain_display可以配合domain限制实现脱敏。

  • domain_display::=
  • domain_name::=
    image.png
  • domain_order::=
    image.png
  • domain_check::=
    image.png
  • domain_cast::=

其中domain_display、domain_name和domain_order可以跟不止一个参数。

domain_display返回与参数关联的domian的domain display表达式。给定u.d,一个限定domain名称,其中u代schema或用户名,d代表domain名,domian u.d(a1,…,an)与由第i个参数取代的u.d第i列相关联。如果(a1,…,an)与domain不关联,或者如果u.d没有显示表达式,则返回null。(不得不说这段话没大看懂,从昨天示例来看就是按照限制对原始内容进行处理后显示出来)

domain_name返回与参数关联的domain的指定domain名称(如果有),否则返回null。

domain_order返回与参数关联的domian的顺序表达式。domain_order(a1,…,an)返回域u.d(a1,…,an)关联的domain顺序表达式,其中u.d第i列被第i个参数替换。如果(a1,…,an)与domain不关联,或者如果u.d没有顺序表达式,则返回null。如果当前用户对参数所关联的domain没有execute权限,则还会返回null。(还是云里雾里的,下面看看能不能做实验)

domain_cast算了,我更看不懂,直接po原文(和机翻)了,感觉实验也不大好做的样子:
cast(expr as domain [u.]d) raises an error if [u].d is not a domain or if the user has no execute privilege on u.d or if u.d is a multi-column domain. it also raises an error if expr cannot be casted to the domain’s column data type, or if any of the domain’s enabled constraints is not satisfied when the domain column is substituted by expr. the result expression is cast to the domain column’s data type. not yet in the label but soon to be merged, there is support for cast(expr as [u.]d) (where the keyword domain is not specified). it will behave as cast (expr as domain [u.]d) if [u.]d is a domain, or else it will expect [u.]d to be an adt.
如果[u].d不是域,或者用户对u.d没有execute权限,或者u.d是多列域,cast(expr as domain[u.]d)会引发错误。如果无法将expr强制转换为域的列数据类型,或者当域列被expr替换时,不满足域的任何启用约束,也会引发错误。结果表达式被强制转换为域列的数据类型。尚未在标签中,但即将合并,支持cast(expr as[u.]d)(其中未指定关键字domain)。如果[u.]d是一个域,它将表现为cast(expr as domain[u.]d),否则它将期望[u.]d.是一个adt。(by 度娘)

示例

domain_display就不做实验了,详见上一期。

image.png
image.png
domain没生效?!
image.png
有点意思!
image.png
domain_check这个函数看起来主要是针对内容进行判断,是否满足domian中的check条件。
image.png
还是绕不过display。

domain_order则显示domain中指定的周日期和数字之间的对应,然而,1和4都else成了7,其实不大满足条件。rollback并drop table tm3 purge,看看怎么能实现需求。

给表加一个check约束是可以实现滴,虽然一开始想用boolean和domain_check连用来实现,但是一直在失败。

似乎是domain_order和domain_check脱离了表不能直接使用。

总结

第一次一周写三篇,其实还有一些关于sql domain的没涉及,看看下期是不是换个内容。
老规矩,知道写了些啥(有点晕就是了)。

最后修改时间:2023-04-14 23:27:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

网站地图