Oracle怎样用触发器创建自增列

 我来答
油山冻5792
2013-12-18 · 超过68用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:126万
展开全部
End 补充: 不好意思,更改一下:Create Or Replace Trigger Testtable_Trigger Before Insert On Testtable Referencing Old As Old New As New For Each RowBeginSelect TestTable_Sequence.Nextval Into :new.ID From DUAL;End;追问: 往表里插数据是不是和SQL Server一样不写自增列的值 回答: 如上创建了序列和触发器,就不用写自增列的值了,在用户每次插入一条记录时,会自动给自增列赋值。 追问: Select TestTable_Sequence.Nextval Into :new.ID From DUAL;中的" :new.ID "是什么 回答: 不好意思,忘记给你解释了。ID就是指你的自增列字段 。 追问: 我用过了,它报的是没有足够的值,这是什么原因 回答: 我自己测试了,没有问题。你能把你写的序列发给我看看吗? 追问: SQL> create tablespace eshop datafile 'd:\mydata.ora' size 5m;SQL> create user zhaobibo identified by zhaobibo default tablespace eshop;SQL> grant connect,resource to zhaobibo;SQL> create sequence myse start with 1 increment by 1;SQL> create table users(id number,name varchar2(20),constraint pk primary key(id));SQL> Create Or Replace Trigger Users_Trigger Before Insert On users Referencing Old As Old New As New For Each Row2 Begin3 select myse.nextval into :New.id from dual;4 End;5 / 回答: Insert Into Users(name) Values('许仙') 。你执行这个插入语句试试。 追问: 我用了,可以了,我再问你一下: Referencing Old As Old New As New 中的Old As Old New As New是什么意思,两个Old和两个New是自己随便取的名字吗? 回答: 你可以改成这样Referencing old as oldValue new as newValue for each rowbegin Select MySe.Nextval := :newValue;end; 补充: Old汉语意思就是旧,也就是旧的值,在指定Before关键字时,Old.ID 应该是空值。在指定after关键字时,应该就是当前记录当前列的值。new就是新插入的值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式