• <sup id="my82s"><source id="my82s"></source></sup>
  • <legend id="my82s"><div id="my82s"></div></legend>
    <li id="my82s"><tt id="my82s"></tt></li>
    <bdo id="my82s"><rt id="my82s"></rt></bdo>
  • 查看: 705|回复: 2

    [每日一题] PL/SQL Challenge 每周一题:2023-4-22 标识列(identity column)

    [复制链接]
    论坛徽章:
    519
    奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
    跳转到指定楼层
    1#
    发表于 2023-5-1 23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最 先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。

    每两周的优胜者可获得itpub奖励的技术图书一本。

    以往旧题索引:
    http://www.kz486.com/forum.php?m ... eid&typeid=1808

    原始出处:
    https://devgym.oracle.com/

    作者:Chris Saxon

    运行环境:SQLPLUS, SERVEROUTPUT已打开, 最 低版本要求:19.1
    注:本题给出答案时候要求给予简要说明才能得到奖品

    哪些选项可以用来取代如下的 ##REPLACE## :

    create table qz_invoices (
    invoice_id  integer
       ##REPLACE##
       primary key,
    customer_id integer
    );


    insert into qz_invoices values ( null, 1 );

    使得insert语句能够执行不出错?

             
    (A)
    generated as identity

    (B)
    generated always as identity

    (C)
    generated by default as identity

    (D)
    generated by default on null as identity

    论坛徽章:
    12
    咸鸭蛋
日期:2011-11-28 23:48:04托尼托尼·乔巴
日期:2018-07-30 15:26:06山治
日期:2018-07-26 13:26:23马上加薪
日期:2014-04-15 02:56:59马上有房
日期:2014-03-31 12:14:25ITPUB社区12周年站庆徽章
日期:2013-08-20 11:30:11林肯
日期:2013-07-30 18:00:552010广州亚运会纪念徽章:射箭
日期:2013-06-26 17:43:12紫蛋头
日期:2013-05-10 14:07:392013年新春福章
日期:2013-02-25 14:51:24
    2#
    发表于 2023-5-4 16:18 | 只看该作者
    答案选择 A & B,  
    A, generated as identity 表示该列是自动生成的,可以使用自动生成或其他方式生成**值
    B, 和A类似,区别在于即使提供了值也会自动生成
    C & D,都需要显式提供该列的值

    使用道具 举报

    回复
    论坛徽章:
    519
    奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
    3#
     楼主| 发表于 2023-5-10 03:24 | 只看该作者
    答案D, 本期无人得奖。

    A:
    这个使用了标识列(identity column)的缺省设置,即generated always as identity。这意味着你不能够为invoice_id提供任何值。insert会报错:
    ORA-32795: cannot insert into a generated always identity column

    B:
    这是缺省设置,所以和前一选项相同。

    C:
    将一个标识列声明为generated by defaulty允许你为invoice_id提供自己的值。这个列是主键,所以它们必须非空!insert会报错:
    ORA-01400: cannot insert NULL into ("CHRIS"."QZ_INVOICES"."INVOICE_ID")

    D:
    使用default on null允许数据库自动填充invoice_id,即使你视图插入null! 这使得你能够插入这行数据。

    使用道具 举报

    回复

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

    本版积分规则 发表回复

    TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
      ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
      ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
    CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
    京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
      
    快速回复 返回顶部 返回列表
    亚洲三级理论
  • <sup id="my82s"><source id="my82s"></source></sup>
  • <legend id="my82s"><div id="my82s"></div></legend>
    <li id="my82s"><tt id="my82s"></tt></li>
    <bdo id="my82s"><rt id="my82s"></rt></bdo>