资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

oracle怎么实现 使用oracle

oracle怎么实现id自增和设置主键啊

可以使用序列实现id自增,主键的语法为primary key。

10年的眉县网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整眉县建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“眉县网站设计”,“眉县网站推广”以来,每个客户项目都认真落实执行。

当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。

创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。

具体代码示例如下:

创建表      

create table book(     

bookId varchar2(4) primary key, 

name varchar2(20)       

); 

创建序列   

create sequence book_seq start with 1 increment by 1;

创建触发器   

create or replace trigger book_trigger     

before insert on book     

for each row     

begin     

select book_seq.nextval into :new.bookId from dual;

end ; 

添加数据   

insert into book(name)  values ('cc'); 

insert into book(name)  values ('dd'); 

commit;

扩展资料:

在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。

触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。

触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete)操作等。

oracle如何实现数据库的完整性

ORACLE应用于关系数据库的表的数据完整性有下列类型: 在插入或修改表的行时允许不允许包含有空值的列,称为空与非空规则。 唯一列值规则,允许插入或修改的表行在该列上的值唯一。 引用完整性规则,同关系模型定义 用户对定义的规则,为复杂性完整性检查。 ORACLE允许定义和实施上述每一种类型的数据完整性规则,这些规则可用完整性约束和数据库触发器定义。 完整性约束,是对表的列定义一规则的说明性方法。 数据库触发器,是使用非说明方法实施完整性规则,利用数据库触发器(存储的数据库过程)可定义和实施任何类型的完整性规则。

求采纳

如何实现两个Oracle数据库的数据同步?

为方便完成指定数据表的同步操作,可以采用dblink与merge结合的方法完成。

操作环境: 此数据库服务器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:

1.在源库创建到目标库的dblink

create database link branch     --输入所要创建dblink的名称,自定义 

connect to dbuser identified by “password”  --设置连接远程数据库的用户名和密码 

using '192.168.196.76/branch';  --指定目标数据库的连接方式,可用tns名称

在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。

2.成功后验证dblink

select * from tb_bd_action@branch; --查询创建好的brach库

正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.

3.通过merge语句完成表数据同步

此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:

merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk)  --从center将表merge到branch,同步的依据是两个表的pk

when matched then  update set b.sqlscripe=c.sqlscripe,b.author=c.author  --如果pk值是相同则将指定表的值更新到目标表

when not matched then   --如果pk值不一至,则将源表中的数据整条插入到目标表中

insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);

commit;               --记得merge后必须commit,否则更改未能提交

4.为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:

a.创建merge文件夹

b.先将merge语句写完整后,存到merge.sql文件中

c.新建merge.bat文件,编辑后写入以下内容

sqlplus user/password@serverip/database @"%cd%\merge.sql"

oracle是怎么实现表的自增

用触发器trigger的功能来实现它: 1、首先建立一个创建自增字段的存储过程create or replace procedure pro_create_seq_col

(tablename varchar2,columnname varchar2)

as

strsql varchar2(1000);

begin

strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';

execute immediate strsql;

strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end;';

execute immediate strsql;

end;

/

2、Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限)GRANT CREATE ANY SEQUENCE TO UserName;

GRANT CREATE ANY TRIGGER TO UserName;

3、重新Compile存储过程pro_create_seq_col; 4、搞定,下面我们就可以用这个存储过程建立自增自段了。 5、调用存储过程建立自增字段(提示: 第一个参数是表名,第二个参数为自增字段的名字)exec pro_create_seq_col('sb_zsxx','zsxh');

exec pro_create_seq_col('sb_sbxx','sbxh');

exec pro_create_seq_col('sb_jkx','pzxh');

exec pro_create_seq_col('sdspfp','sysfpid');

如何实现oracle数据库的备份计划

利用任务计划、批处理文件和ORACLE的EXP导出功能,可以根据日期自动生成ORACLE备份文件,大大方便了ORACLE数据备份。

建议一(做周备份并压缩为RAR)以下为ORACLE 自动备份批处理文件内容,请配合任务计划实现 :

例:

@ECHO OFF

SET BACKPATH=d:\

ECHO 准备备份数据库

REM 7天一个循环

IF EXIST %BACKPATH%\ONE GOTO ONE

IF EXIST %BACKPATH%\TWO GOTO TWO

IF EXIST %BACKPATH%\THREE GOTO THREE

IF EXIST %BACKPATH%\FOUR GOTO FOUR

IF EXIST %BACKPATH%\FIVE GOTO FIVE

IF EXIST %BACKPATH%\SIX GOTO SIX

IF EXIST %BACKPATH%\SEVEN GOTO SEVEN

ECHO E %BACKPATH%\ONE

:ONE

SET BACKPATH_FULL=%BACKPATH%\ONE

REN %BACKPATH%\ONE TWO

GOTO BACK

:TWO

SET BACKPATH_FULL=%BACKPATH%\TWO

REN %BACKPATH%\TWO THREE

GOTO BACK

:THREE

SET BACKPATH_FULL=%BACKPATH%\THREE

REN %BACKPATH%\THREE FOUR

GOTO BACK

:FOUR

SET BACKPATH_FULL=%BACKPATH%\FOUR

REN %BACKPATH%\FOUR FIVE

GOTO BACK

:FIVE

SET BACKPATH_FULL=%BACKPATH%\FIVE

REN %BACKPATH%\FIVE SIX

GOTO BACK

:SIX

SET BACKPATH_FULL=%BACKPATH%\SIX

REN %BACKPATH%\SIX SEVEN

GOTO BACK

:SEVEN

SET BACKPATH_FULL=%BACKPATH%\SEVEN

REN %BACKPATH%\SEVEN ONE

GOTO BACK

:BACK

EXP ccense/ccense FILE=%BACKPATH_FULL%.DMP

RAR a %BACKPATH_FULL%.rar %BACKPATH_FULL%.DMP

DEL %BACKPATH_FULL%.DMP

SET BACKPATH=

SET BACKPATH_FULL=

EXIT

说明:

文件名以星期来命名

备份后调用rar进行压缩

这样可以保存一个星期的历史数据

注意:需要把program files/winrar目录下的rar.exe拷贝到系统system32目录下

建议二:

1,批处理文件backup.bat\.

exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log

将生成oracle2006-01-09.dmp文件

exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log

将生成oracle星期一.dmp文件,则每周循环保留一个备份文件,共7个备份文件循环 $date$日期参数可灵活运用。

oracle怎么实现分页

因为Oracle数据库没有Top关键字,所以这里就不能够像微软的数据据那样操作,这里有两种方法:

一种是利用相反的。

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id

select * from components where id not in(select id from components where rownum=(PAGESIZE*(CURRENTPAGE-1))) and rownum=PAGESIZE order by id;

如下例:

select * from components where id not in(select id from components where rownum=100) and rownum=10 order by id;

从101到记录开始选择,选择前面10条。

使用minus,即中文的意思就是减去,呵呵,这语句非常的有意思,也非常好记

select * from components where rownum=(PAGESIZE*(CURRENTPAGE-1)) minus select * from components where rownum=(PAGESIZE*(CURRENTPAGE-2));

如例:select * from components where rownum=10 minus select * from

一种是利用Oracle的rownum,这个是Oracle查询自动返回的序号,一般不显示,但是可以通过select rownum from [表名],可以看到,是从1到当前的记录总数。

select * from (select rownum tid,components.* from components where rownum=100) where tid=10;


网站标题:oracle怎么实现 使用oracle
文章链接:http://cdkjz.cn/article/hpjoco.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220