- 浏览: 495390 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (285)
- 数据库 (49)
- dwr (1)
- js (35)
- security (6)
- freemaker (4)
- 网站建设 (15)
- css (5)
- javaEE (56)
- 生活点滴 (12)
- 安装与配置 (16)
- ssh2 (13)
- 开源软件 (6)
- web 应用服务器 (6)
- 开发模式和设计模式 (2)
- linux (5)
- 项目管理 (7)
- 计算机杂症 (0)
- appScan (1)
- idea (3)
- android (1)
- java @override 报错处理 (1)
- lucene (5)
- java (2)
- groovy (1)
- Extjs (7)
- asp (2)
- php (2)
- Memcached (1)
- 名言 (1)
- 面试 (1)
- Jmeter (0)
- 微信支付 (1)
- app开发 (1)
- branch分支合并到trunk主干 (1)
- 自动化测试 (1)
- springClond (1)
- ELK (2)
最新评论
-
skykufo:
坑爹啊,我也因为写多了一个div,在ie8浪费了一天
jQuery加载(load、get、post)页面显示空白原因 -
yeyinzhu3211:
帅哥,我想问下,是怎么去除呀?能详细说明下吗?
IntelliJ IDEA 10.5.1 无法断点或停止不动 -
sshitaime:
怎么下载不了啊,能给我一个安装包吗
oracle 10g透明网关组件下载地址(新) -
fuanyu:
xiaohuafyle 写道被你的头像吓尿了 哥们有这么可怕呀 ...
netstat -aon -
wanlt_software:
谢谢。。。。。
oracle 10g透明网关组件下载地址(新)
本文来自: http://meetrice.iteye.com/blog/89426
2007-06-12
MySQL序列解决方案
MySQL自增长与Oracle序列的区别:
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.
在mysql中添加序列,请看下面的实例:
在MYSQL里有这样一张表:
在ORACLE是这样的:
在oracle下为表添加一个触发器,就可以实现mysql自增长功能:
这样,插件记录就可以成为MYSQL风格:
下面我们来看看如何在mysql数据里使用Oracle序列语法.NEXTVAL 和 .CURVAL.
我们假设在mysql中序列的语法是:
下面就是CURRRVAL的实现方案:
测试一下结果:
nextval
setval
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.
在mysql中添加序列,请看下面的实例:
在MYSQL里有这样一张表:
CREATE TABLE Movie( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(60) NOT NULL, released YEAR NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB;
INSERT INTO Movie (name,released) VALUES ('Gladiator',2000);
INSERT INTO Movie (id,name,released) VALUES (NULL,'The Bourne Identity',1998);
INSERT INTO Movie (id,name,released) VALUES (NULL,'The Bourne Identity',1998);
在ORACLE是这样的:
CREATE TABLE Movie( id INT NOT NULL, name VARCHAR2(60) NOT NULL, released INT NOT NULL, PRIMARY KEY (id) ); CREATE SEQUENCE MovieSeq;
INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,'Gladiator',2000);
在oracle下为表添加一个触发器,就可以实现mysql自增长功能:
CREATE OR REPLACE TRIGGER BRI_MOVIE_TRG BEFORE INSERT ON Movie FOR EACH ROW BEGIN SELECT MovieSeq.NEXTVAL INTO :new.id FROM DUAL; END BRI_MOVIE_TRG; . RUN;
这样,插件记录就可以成为MYSQL风格:
INSERT INTO Movie (name,released) VALUES ('The Lion King',1994);
下面我们来看看如何在mysql数据里使用Oracle序列语法.NEXTVAL 和 .CURVAL.
我们假设在mysql中序列的语法是:
NEXTVAL(’sequence’);
CURRVAL(’sequence’);
SETVAL(’sequence’,value);
下面就是CURRRVAL的实现方案:
DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(50) NOT NULL, current_value INT NOT NULL, increment INT NOT NULL DEFAULT 1, PRIMARY KEY (name) ) ENGINE=InnoDB; INSERT INTO sequence VALUES ('MovieSeq',3,5); DROP FUNCTION IF EXISTS currval; DELIMITER $ CREATE FUNCTION currval (seq_name VARCHAR(50)) RETURNS INTEGER CONTAINS SQL BEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequence WHERE name = seq_name; RETURN value; END$ DELIMITER ;
测试一下结果:
-
+---------------------+
| currval('MovieSeq') |
+---------------------+
| 3 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT currval('x');
+--------------+
| currval('x') |
+--------------+
| 0 |
+--------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------+
| Level | Code | Message |
+---------+------+------------------+
| Warning | 1329 | No data to FETCH |
+---------+------+------------------+
1 row in set (0.00 sec)
nextval
DROP FUNCTION IF EXISTS nextval; DELIMITER $ CREATE FUNCTION nextval (seq_name VARCHAR(50)) RETURNS INTEGER CONTAINS SQL BEGIN UPDATE sequence SET current_value = current_value + increment WHERE name = seq_name; RETURN currval(seq_name); END$ DELIMITER ;
mysql> select nextval('MovieSeq'); +---------------------+ | nextval('MovieSeq') | +---------------------+ | 15 | +---------------------+ 1 row in set (0.09 sec) mysql> select nextval('MovieSeq'); +---------------------+ | nextval('MovieSeq') | +---------------------+ | 20 | +---------------------+ 1 row in set (0.01 sec) mysql> select nextval('MovieSeq'); +---------------------+ | nextval('MovieSeq') | +---------------------+ | 25 | +---------------------+ 1 row in set (0.00 sec)
setval
DROP FUNCTION IF EXISTS setval; DELIMITER $ CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) RETURNS INTEGER CONTAINS SQL BEGIN UPDATE sequence SET current_value = value WHERE name = seq_name; RETURN currval(seq_name); END$ DELIMITER ;
- mysql> select setval('MovieSeq',150);
- +------------------------+
- | setval('MovieSeq',150) |
- +------------------------+
- | 150 |
- +------------------------+
- 1 row in set (0.06 sec)
- mysql> select curval('MovieSeq');
- +---------------------+
- | currval('MovieSeq') |
- +---------------------+
- | 150 |
- +---------------------+
- 1 row in set (0.00 sec)
- mysql> select nextval('MovieSeq');
- +---------------------+
- | nextval('MovieSeq') |
- +---------------------+
- | 155 |
- +---------------------+
- 1 row in set (0.00 sec)
在my5.5版本中会出现这个错误:
mysql ERROR 1418 (HY000) at line xx: This function has none of DETERMINISTIC
解决它时
1. mysql> SET GLOBAL log_bin_trust_function_creators = 1;
2. 系統啟動時,加上--log-bin-trust-function-creators 參數為1
3. 直接在my.ini的[mysqld]區段加上log-bin-trust-function-creators=1
當然我想大多數人會用第三種方法,
ok...繼續我的SP學習,good luck..
详细解决bug地址:http://blog.myspace.cn/e/407809794.htm
发表评论
-
linux下Mongodb的安装与启动
2018-05-18 15:32 682Linux下Mongodb的安装与启动 1、根据lin ... -
Mysql 远程登录及常用命令
2017-01-16 15:25 660来自:http://www.cnblogs.com/good ... -
win7下mysql 不是内部或外部命令解决办法
2017-01-16 15:14 842来自:http://blog.csdn.net/homedj ... -
left join的第二表中符合条件的第一条记录
2015-10-20 16:59 6548表1 parking的数据 通过left join第二表 ... -
oracle 查询当前节点的所有子节点(或父节点)的语句
2015-05-28 14:02 1403描述tb_doc_catalog表(cat_id,cat_n ... -
MySQL命令行导出数据库
2015-02-02 23:56 736MySQL命令行导出数据库:1,进入MySQL目录下的bin ... -
ORACLE11G设置IP访问限制
2014-12-17 18:26 788出于数据安全考虑,对oracle数据库的IP做一些限制,只有 ... -
oracle定时备份-增量备份
2014-12-10 17:59 847在进行数据库维护的过程中经常会遇到数据库备份的问题。先介绍 ... -
ORA-12519: TNS:no appropriate service handler found 解决
2014-11-17 09:53 791有时候连得上数据库,有时候又连不上. 可能是数据库上当前的 ... -
ORA-28056的解决办法
2014-11-10 10:54 1377客户端一直无法连接,查看alert日志,错误日志如下: ... -
plsql不用配置netManager直接访问oracle
2014-10-14 11:38 1550plsql不用配置netManager直接访问oracle ... -
oracle库中只读用户需要的权限
2013-08-28 23:23 4490业务中要求建立一个只读用户,此用户对其他用户的对象有只读权限 ... -
oracle10 集群 jdbc数据库连接包
2012-12-29 15:46 1169常用JDBC JAR 信息 序号 常用JDBC驱动包 ... -
oracle集群url配置
2012-12-29 15:37 1268oracle集群中plsql和java程序连接方式非集群中pl ... -
oracle常用的bug问题解决
2012-10-17 18:11 1011oracle常用的bug问题解决:测试中所用到的都是win20 ... -
sql 过滤重复数据
2012-06-15 15:57 0sql 过滤重复数据 distinct或group by ... -
Oracle定时任务(转)
2012-04-09 17:16 1008创建表 Sql代码 create tab ... -
(原)mssql数据迁移到oracle
2012-02-10 17:36 1329迁移过程中遇到两种Microsoft OLE DB Prov ... -
JDBC Driver For MSSQL2000/2005/2008(downmoon)
2012-02-08 10:48 2177机器上配置的JDK为1.6,S ... -
oracle 10g透明网关组件下载地址(新)
2012-01-13 15:56 3576oracle 10g透明网关组件下载地址,需要oracle注册 ...
相关推荐
4. **数据库存储**:根据数据类型和查询需求,可以选择关系型数据库(如MySQL、PostgreSQL等)、NoSQL数据库(如MongoDB、Cassandra等)或时间序列数据库(如InfluxDB、TimescaleDB等)。 5. **分布式存储**:对于...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...
2.4.4 解决打开文件时可能遇到的问题 2.5 写文件 2.5.1 fwrite()的参数 2.5.2 文件格式 2.6 关闭文件 2.7 读文件 2.7.1 以只读模式打开文件:fopen() 2.7.2 知道何时读完文件:feof() 2.7.3 每次读取一行数据:fgets...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
数据库批量操作有很多这样的应用场景,如批量通过选中的审请信息、批量插入采购单的采购清单信息等。一个公认的实事,即关系型数据库在结构化...本文将深入的分析各种解决方案,并重点介绍使用XML的方式批量更新操作。
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...