扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
我以前在这里提到过,我对Oracle数据库还相当陌生。实际上,我在15个月前才刚刚开始接触Oracle。我最开始觉得古怪的是,Oracle没有身份类型,你无法建立一个本身自动递增的栏。
后来的事实证明,这个与众不同的特点也有它的有用之处,例如可以方便地在多个数据库之间共享同一个身份空间。
首先我们来看一个简单的例子,假设你在数据库中有一个表。一般你会首先建立一个序列:
create sequence seq_my_identity_type |
然后你建立一个从这个序列中选择下一个新值的触发器,并把那个值作为ID字段保存。选择下一个值的过程使得Oracle自动递增序列。
在这个简单的例子中,假设你建立了一个名为id_test的表,它只有两个字段,一个叫做ID的数字字段和一个叫做message的文本字段:
CREATE TABLE id_test ( id NUMBER primary key not null, message VARCHAR2(100) ) |
然后一个触发器会使用我们前面建立的序列自动增加那个ID字段,就像是这样:
CREATE OR REPLACE TRIGGER t_id_test_bi BEFORE INSERT ON id_test REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW begin if inserting then if :new.id is null then select seq_my_identity_type.nextval into :new.id from dual; end if; end if; end; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者