Oracle中触发器实现序列自增
就是在insert一条数据时,用触发器(序列)同时为该数据增加id列。已知序列名:toys_seq表:createtabletestTable(idnumber,name...
就是在insert一条数据时,用触发器(序列)同时为该数据增加id列。
已知序列名:toys_seq
表:
create table testTable(id number,name varchar2(20),sex varchar2(6))
请写个触发器。。谢谢。。
不是这个意思~
我的意思就是这样的
我在Java代码里面插入一条数据的时候不用插入ID这一列,在数据库中写个insert触发器,自动填充id这一列。。
2楼好像可以。。 展开
已知序列名:toys_seq
表:
create table testTable(id number,name varchar2(20),sex varchar2(6))
请写个触发器。。谢谢。。
不是这个意思~
我的意思就是这样的
我在Java代码里面插入一条数据的时候不用插入ID这一列,在数据库中写个insert触发器,自动填充id这一列。。
2楼好像可以。。 展开
4个回答
展开全部
Oracle8i中存储过程的类型
Oracle8i支持的存储过程类型有几种?Oracle8i 支持四种不同类型的存储过程用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:
存储过程顶级存储过程允许客户用任意商业逻辑扩展SQL。客户用名称调用存储过程,可以在SQL、PL/SQL包、以及“顶级”位置上调用存储过程。
存储函数存储函数实质上与存储过程相同,不同之处在于存储函数向调用者返回值。可以用名称调用存储函数,也可以在SQL、PL/SQL包、以及“顶级”位置上调用存储函数。
数据库触发器:触发器是与特定的表和视图关联的商业规则,修改对表或视图时,SQL自动调用触发器。Oracle8i 提供了几种类型的触发器:在SQLDML语句执行之前或之后激发的触发器;在每一行更新之前或之后激发的触发器;事件触发器(例如:登录、退出、DDL语句、数据库启动或关闭等的触发器);替代(instead-of)触发器。所有这些触发器类型,都可以用PL/SQL或Java编写。
对象类型方法 Oracle8 ™ 发行版8.0和Oracle8i提供了用SQL定义复合数据类型的能力。这些对象类型的方法,可以用Java实现,也可用PL/SQL实现。例如,可以用SQL定义一个订单对象类型purchase_order_t,如下所示:
Oracle8i支持的存储过程类型有几种?Oracle8i 支持四种不同类型的存储过程用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:
存储过程顶级存储过程允许客户用任意商业逻辑扩展SQL。客户用名称调用存储过程,可以在SQL、PL/SQL包、以及“顶级”位置上调用存储过程。
存储函数存储函数实质上与存储过程相同,不同之处在于存储函数向调用者返回值。可以用名称调用存储函数,也可以在SQL、PL/SQL包、以及“顶级”位置上调用存储函数。
数据库触发器:触发器是与特定的表和视图关联的商业规则,修改对表或视图时,SQL自动调用触发器。Oracle8i 提供了几种类型的触发器:在SQLDML语句执行之前或之后激发的触发器;在每一行更新之前或之后激发的触发器;事件触发器(例如:登录、退出、DDL语句、数据库启动或关闭等的触发器);替代(instead-of)触发器。所有这些触发器类型,都可以用PL/SQL或Java编写。
对象类型方法 Oracle8 ™ 发行版8.0和Oracle8i提供了用SQL定义复合数据类型的能力。这些对象类型的方法,可以用Java实现,也可用PL/SQL实现。例如,可以用SQL定义一个订单对象类型purchase_order_t,如下所示:
参考资料: http://www.jacken.com.cn/Database/Oracle/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.CREATE SEQUENCE toys_seq--//创建一个sequence
INCREMENT BY 1 --// 每次加几个
START WITH 1 -- //从1开始计数
NOMAXVALUE -- //不设置最大值
NOCYCLE -- //一直累加,不循环
CACHE 10;
2.在插入数据时 INSERT into testTable values(toys_seq.NEXTVAL,'asd','mail');
是这个意思不???
INCREMENT BY 1 --// 每次加几个
START WITH 1 -- //从1开始计数
NOMAXVALUE -- //不设置最大值
NOCYCLE -- //一直累加,不循环
CACHE 10;
2.在插入数据时 INSERT into testTable values(toys_seq.NEXTVAL,'asd','mail');
是这个意思不???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE TRIGGER TRGname
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;
自己改下触发器名、表名、序列名
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;
自己改下触发器名、表名、序列名
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
insert into test values(toys_seq.nextval,name,sex)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询