- 浏览: 23795 次
- 性别:
- 来自: 济南
最新评论
创建自增序列
CREATE SEQUENCE SEQname
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
CREATE or replace TRIGGER TRGname
BEFORE INSERT ON userinfo
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.customerid
FROM DUAL;
End;
CREATE or replace TRIGGER tr_trade
BEFORE INSERT ON tradeinfo
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.tid
FROM DUAL;
End;
CREATE or replace TRIGGER tr_type
BEFORE INSERT ON tradetype
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.transid
FROM DUAL;
End;
创建银行卡号
CREATE or replace TRIGGER card_id
BEFORE INSERT ON cardinfo
FOR EACH ROW
Begin
SELECT '1010 3576 '||lpad(to_char(trunc(dbms_random.value(0,9999))),4,'0')||' '||lpad(to_char(trunc(dbms_random.value(0,9999))),4,'0')
INTO :NEW.cardid
FROM DUAL;
End;
测试语句
insert into userinfo(customername,pid,telephone) values('王法英','370126199003092128','15253503967')
select * from userinfo
insert into cardinfo(savingid,openmoney,balance,password,customerid) values('定期',1,1,123456,2)
select * from cardinfo
select * from tradetype
insert into tradetype(transname) values('转账');
insert into tradetype(transname) values('存款');
insert into tradetype(transname) values('取款');
insert into tradetype(transname) values('手机缴费');
insert into cardinfo(savingid,openmoney,balance,customerid) values('定期',1,1,13);
insert into cardinfo(savingid,openmoney,balance,customerid) values('定期',1,1,14);
修改客户密码
update cardinfo set password='123456' where customerid=13
办理银行卡挂失
update cardinfo set isreportloss='是' where customerid=13
查询本周开户的卡号,显示该卡相关信息
select * from cardinfo where opendate>=sysdate-7 and opendate<=sysdate
查询本月交易金额最高的卡号
select cardid from tradeinfo where transmoney =
(select max(transmoney) from tradeinfo
where transdate>=to_date(to_char(sysdate,'yyyymm'),'yyyymm') and transdate<=sysdate)
查询挂失账号的客户信息
select * from userinfo where customerid in(
select customerid from cardinfo where isreportloss='是'
)
客户基本信息:v_userInfo
create or replace view v_userinfo as
select customerid 用户编号,customername 用户名,pid 身份证号,telephone 电话,address 地址
from userinfo;
select * from v_userinfo
银行卡信息:v_cardInfo
create or replace view v_cardinfo as
select cardid 银行卡号,curid 货币类型,savingid 存款类型,opendate 开户时间,openmoney 开户金额,
balance 余额,password 密码,isreportloss 是否挂失,customerid 客户编号
from cardinfo;
select * from v_cardinfo
银行卡交易信息:v_tradeInfo
create or replace view v_tradeinfo as
select tid 交易号,transdate 交易时间,tradetype.transname 交易类型,
transmoney 交易金额,transcardid 交易对象,remark 备注
from tradeinfo,tradetype where tradeinfo.transid=tradetype.transid;
select * from v_tradeinfo
查询、统计指定时间段内没有发生交易的账户信息
create or replace procedure user_no_trade(
overDate in date,
startDate in date
)
is
cursor cursor_test is select * from cardinfo where transdate>=startDate and transdate<=overDate
and cardid not in(
select distinct cardid from tradeinfo
);
row_test tradeinfo%rowtype;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.cardid||'||'||row_test.curid||'||'||row_test.opendate||'||'||row_test.openmoney
||'||'||row_test.balance||'||'||row_test.isreportloss||'||'||row_test.custeomerid);
end loop;
end;
CREATE SEQUENCE SEQname
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
CREATE or replace TRIGGER TRGname
BEFORE INSERT ON userinfo
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.customerid
FROM DUAL;
End;
CREATE or replace TRIGGER tr_trade
BEFORE INSERT ON tradeinfo
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.tid
FROM DUAL;
End;
CREATE or replace TRIGGER tr_type
BEFORE INSERT ON tradetype
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.transid
FROM DUAL;
End;
创建银行卡号
CREATE or replace TRIGGER card_id
BEFORE INSERT ON cardinfo
FOR EACH ROW
Begin
SELECT '1010 3576 '||lpad(to_char(trunc(dbms_random.value(0,9999))),4,'0')||' '||lpad(to_char(trunc(dbms_random.value(0,9999))),4,'0')
INTO :NEW.cardid
FROM DUAL;
End;
测试语句
insert into userinfo(customername,pid,telephone) values('王法英','370126199003092128','15253503967')
select * from userinfo
insert into cardinfo(savingid,openmoney,balance,password,customerid) values('定期',1,1,123456,2)
select * from cardinfo
select * from tradetype
insert into tradetype(transname) values('转账');
insert into tradetype(transname) values('存款');
insert into tradetype(transname) values('取款');
insert into tradetype(transname) values('手机缴费');
insert into cardinfo(savingid,openmoney,balance,customerid) values('定期',1,1,13);
insert into cardinfo(savingid,openmoney,balance,customerid) values('定期',1,1,14);
修改客户密码
update cardinfo set password='123456' where customerid=13
办理银行卡挂失
update cardinfo set isreportloss='是' where customerid=13
查询本周开户的卡号,显示该卡相关信息
select * from cardinfo where opendate>=sysdate-7 and opendate<=sysdate
查询本月交易金额最高的卡号
select cardid from tradeinfo where transmoney =
(select max(transmoney) from tradeinfo
where transdate>=to_date(to_char(sysdate,'yyyymm'),'yyyymm') and transdate<=sysdate)
查询挂失账号的客户信息
select * from userinfo where customerid in(
select customerid from cardinfo where isreportloss='是'
)
客户基本信息:v_userInfo
create or replace view v_userinfo as
select customerid 用户编号,customername 用户名,pid 身份证号,telephone 电话,address 地址
from userinfo;
select * from v_userinfo
银行卡信息:v_cardInfo
create or replace view v_cardinfo as
select cardid 银行卡号,curid 货币类型,savingid 存款类型,opendate 开户时间,openmoney 开户金额,
balance 余额,password 密码,isreportloss 是否挂失,customerid 客户编号
from cardinfo;
select * from v_cardinfo
银行卡交易信息:v_tradeInfo
create or replace view v_tradeinfo as
select tid 交易号,transdate 交易时间,tradetype.transname 交易类型,
transmoney 交易金额,transcardid 交易对象,remark 备注
from tradeinfo,tradetype where tradeinfo.transid=tradetype.transid;
select * from v_tradeinfo
查询、统计指定时间段内没有发生交易的账户信息
create or replace procedure user_no_trade(
overDate in date,
startDate in date
)
is
cursor cursor_test is select * from cardinfo where transdate>=startDate and transdate<=overDate
and cardid not in(
select distinct cardid from tradeinfo
);
row_test tradeinfo%rowtype;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.cardid||'||'||row_test.curid||'||'||row_test.opendate||'||'||row_test.openmoney
||'||'||row_test.balance||'||'||row_test.isreportloss||'||'||row_test.custeomerid);
end loop;
end;
发表评论
-
关于Map常用的方法
2014-02-25 09:25 8231 将Map转换成List // key list List ... -
Effictive Java 读书笔记
2013-10-11 13:51 785Effictive Java 1 考虑用静 ... -
eclipseSSH整合
2013-02-25 16:16 7101 Exception loading sessions fr ... -
简单java ibatis
2012-12-24 13:50 0ibatis小巧,易上手,适合于小型项目开发。 其中对于引用的 ... -
自己做的Ajax小练习
2012-11-13 08:42 6951 关于Ajax三个方法的固定写法 <scri ... -
自己做的web练习
2012-11-12 19:54 677参见附件:service 与client -
struts2小知识点
2012-11-01 10:19 7061 默认的命名空间“ namespace="&qu ... -
2012-10-11 Hibernate杂碎
2012-10-11 18:35 6271 从Hibernate的参考手册中,我们基本可以总结出这样几 ... -
Hibernate BaseDao
2012-10-09 17:16 0package net.comtops.dao.impl; ... -
Hibernate 实现增删改
2012-10-09 16:53 730Configuration conf = null; S ... -
Hibernate 主键生成策略
2012-10-09 16:14 627此处我们只针对常用的数据库类型进行说明,其他的略过: 1 Or ... -
JSP一个正确的验证码
2012-09-27 15:13 708image.jsp页面 <%@ page conte ... -
SQL SERVER分页
2012-09-27 09:51 710分页方案一:(利用Not In和SELECT TOP分页) ... -
JDBC数据库连接
2012-09-10 16:11 547MySQL: String Driver="com ... -
oracle分页以及rownum、rowid的使用
2012-09-09 14:13 756分页存储过程: 1.根据ROWID来分,执行时间0.03秒 c ... -
ObjectOutputStream
2012-08-02 11:05 943要根据用户选择,向一个文件写一个类(Student)的实例,使 ... -
java
2012-07-30 14:45 411- 第一种情况: Comparator cmp = Col ... -
初始化块和构造器
2012-07-24 08:31 6331,构造器的语法格式 修饰符:public private,p ... -
黑马程序员:学习笔记第一天
2012-03-26 21:28 572android培训、java培训、期待与您交流! ------ ...
相关推荐
本压缩包"Oracle自增序列和触发器生成工具"提供了一种便捷的方式,帮助开发者快速生成这些必要的数据库对象,从而提高开发效率。 首先,让我们了解什么是Oracle自增序列。在Oracle中,序列(SEQUENCE)是一种特殊的...
在Oracle数据库中,由于没有像MySQL的`auto_increment`或者SQL Server的`IDENTITY`这样的内置机制,所以自增序列的实现通常需要借助于Oracle的`SEQUENCE`对象。MyBatis,作为一个强大的ORM(对象关系映射)框架,...
在Oracle数据库中实现主键自增功能可以通过创建序列(sequence)与触发器(trigger)相结合的方式实现。这种方式不仅能够确保数据表中的主键唯一性,还能自动递增,极大地简化了开发人员的工作。 #### 创建Sequence...
### Oracle通过触发器实现序列自增 在Oracle数据库中,序列是一种非常实用的对象,它可以用于自动产生唯一的数值。本文将详细介绍如何通过触发器与序列相结合的方式,在Oracle数据库中实现记录的自增功能。 #### ...
### ORACLE自增主键设置方法 在Oracle数据库中,自增主键是一种常见的主键设计方式,它能够确保每条记录的唯一性,并且在插入新记录时自动递增,简化了数据管理流程。本文将详细介绍如何在Oracle中设置自增主键。 ...
本问题主要涉及从Oracle迁移到MySQL时,如何处理自增序列(Identity或Sequence)的兼容性问题。Oracle数据库中,自增序列通常通过Sequence对象实现,而MySQL则通过在表定义中设置`AUTO_INCREMENT`属性来实现自增主键...
#### 创建表与自增序列 在创建表时,我们首先需要定义一个数字类型的字段作为主键,并设置为`NOT NULL`以确保该字段不能为空。然后,通过创建一个自增序列来实现自增功能。例如: ```sql CREATE TABLE example ( ...
### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
### Oracle建立自增主键 在Oracle数据库管理中,创建自增主键是一种常见的需求,尤其是在需要自动为表中的每一行记录分配一个唯一标识符的情况下。本文将详细介绍如何利用Oracle提供的`SEQUENCE`和`TRIGGER`来实现...
- 观察主键列是否按预期自增。 示例SQL脚本: ```sql CREATE TABLE G_EC_LotteryCategory ( lcId NUMBER(3) NOT NULL, lcName NVARCHAR2(30), lcAbbr NVARCHAR2(20), CONSTRAINT PK_G_EC_LOTTERYCATEGORY ...
在Oracle中,这通常是通过使用序列(sequence)来实现的。序列是一种对象,可以生成连续的整数,通常用于为主键或唯一标识字段提供值。 ### 示例分析 给定的代码示例展示了如何使用SQL*Loader将数据文件`b.txt`中...
此外,提到了一些与Oracle自增字段相关的文章和方法,如使用触发器(Trigger)和序列(Sequence)模拟自增列,创建自增ID字段的步骤,以及使用序列和触发器的实例。这些方法都是在Oracle中实现自动递增数值的关键...
oracle 数据库主键自增脚本 --第一步,创建表 --第二步,创建自增序列 --第三步,创建触发器
Oracle 数据库中实现属性的自增是通过序列和触发器来实现的。当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 ...
本方法为使用SEQUENCE... 1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1 CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH 1; 2、在表temp_test上建立触发器如下 CREATE OR REPL
### Oracle插入数据时获取自增ID 在Oracle数据库中,当需要实现类似其他数据库系统(如MySQL、SQL Server等)中的自动增长字段功能时,通常会采用序列(sequence)和触发器(trigger)来实现这一需求。下面将详细...
一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 ...
综上所述,Oracle虽然不像某些数据库那样提供直接的主键自增功能,但通过序列、触发器等工具,可以灵活地创建满足需求的自增主键。在设计数据库时,应考虑性能、并发控制和最佳实践,确保系统的稳定性和高效性。
通过这种方式,即使 Oracle 没有内置的自增字段,我们仍然可以利用序列和触发器来实现这一需求,确保数据的唯一性和一致性。这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,...