| 1 | zhangsan | 18 |
| 2 | lisi | 19 |
+ ----+----------+------+
2 rows in set( 0.008sec)
3、通过验证,使用 GENERATED BY DEFAULT AS IDENTITY 可以非常简单地创建自增长列,无需使用其他手段,例如触发器 。此方法不需要手动创建序列,会自动创建一个序列,在内部使用它来生成自增长列的值 。
obclient [SYS]> select* fromdba_objects whereOBJECT_TYPE= 'SEQUENCE';
+ -------+-----------------+----------------+------------------+----------------+-------------+-----------+---------------+------------------------------+--------+-----------+-----------+-----------+-----------+--------------+
| OWNER | OBJECT_NAME | SUBOBJECT_NAME | OBJECT_ID | DATA_OBJECT_ID | OBJECT_TYPE | CREATED | LAST_DDL_TIME | TIMESTAMP | STATUS | TEMPORARY | GENERATED | SECONDARY | NAMESPACE | EDITION_NAME |
+ -------+-----------------+----------------+------------------+----------------+-------------+-----------+---------------+------------------------------+--------+-----------+-----------+-----------+-----------+--------------+
| MYSQL | A_SEQ | NULL | 1100611139403783 | NULL | SEQUENCE | 31-MAY-23 | 31-MAY-23 | 31-MAY-23 02.21.42.603005 PM | VALID | N | N | N | 0 | NULL |
| MYSQL | B_SEQ | NULL | 1100611139403784 | NULL | SEQUENCE | 31-MAY-23 | 31-MAY-23 | 31-MAY-23 03.28.39.222090 PM | VALID | N | N | N | 0 | NULL |
| MYSQL | ISEQ$$_50012_16 | NULL | 1100611139403785 | NULL | SEQUENCE | 31-MAY-23 | 31-MAY-23 | 31-MAY-23 04.01.23.577766 PM | VALID | N | N | N | 0 | NULL |
| MYSQL | SEQ_TEST | NULL | 1100611139403786 | NULL | SEQUENCE | 31-MAY-23 | 31-MAY-23 | 31-MAY-23 05.09.33.981039 PM | VALID | N | N | N | 0 | NULL |
+ -------+-----------------+----------------+------------------+----------------+-------------+-----------+---------------+------------------------------+--------+-----------+-----------+-----------+-----------+--------------+
6 rows in set( 0.042sec)
Tips:3 总结
在 Oracle 12c 及以上版本中,可以使用 GENERATED BY DEFAULT AS IDENTITY 关键字来创建自增长的列;
在 PostgreSQL 数据库中 GENERATED BY DEFAULT AS IDENTITY 也是适用的 。
- 方法一(SEQUENCE + DML):也就是 OB 的官方文档中创建序列的操作,在每次做 INSERT 操作时需要指定自增列并加入 sequence_name ,对业务不太友好, 不推荐 。
- 方法二(SEQUENCE + DDL):相较于第一种该方法只需要指定 DDL 改写 DEFAULT 属性省去了 DML 的操作,但仍需再指定自己创建的序列名 sequence_name ,每个表的序列名都不一致,管理不方便, 不推荐 。
- 方法三(SEQUENCE + 触发器):延用 Oracle 的序列加触发器的方法,触发器会占用更多的计算资源和内存,对性能会有影响,因此也 不推荐 。
- 方法四( GENERATED BY DEFAULT AS IDENTITY 语法):既方便运维人员管理,对业务也很友好,还不影响性能 。 强烈推荐!!!
END
推荐阅读
- 车臣到底是不是俄罗斯领土 车臣现在属于俄罗斯吗
- 船到桥头自然直下一句 船到桥头自然直19
- 2021年几月几号入伏到几号结束头伏饺子二伏面 2021年几月几号入伏到几号结束
- 李宗盛|离婚11年后,李宗盛娶小27岁美女:从少年到白头,我终于放下了你
- etc注销账户要到本地银行吗
- 湘西到底有没有僵尸??♀? 湘西到底有没有僵尸
- 怎么把文件刻录到光盘保存起来
- 怎么才能安慰自己
- 泸州老窖|重达几吨的翡翠原石,居然被1根细线切开!这是怎么做到的?
- 明星流量排行榜在哪里看的到